ile bir .csv dosyası oluşturma ve kullanma. Bir .csv dosyası oluşturuyorum ve sonra kullanıcının UIActivityViewController kullanarak paylaşmasına izin veriyorum.UIActivityViewController
dosyanın NSURL dönecektir csv dosyası oluşturmak için Kodum:
- (NSURL *)exportToCSV
{
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSString *filePath = [docPath stringByAppendingPathComponent:@"results.csv"];
if (![[NSFileManager defaultManager] fileExistsAtPath:docPath]) {
[[NSFileManager defaultManager] createFileAtPath:filePath
contents:nil
attributes:nil];
}
NSMutableString *contents = [NSMutableString stringWithCapacity:0];
//fill contents with data in csv format
// ...
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
[fileHandle writeData:[contents dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
return [NSURL fileURLWithPath:filePath];
}
sonra Etkinliğimi NSURL UIActivityViewController başlatmak için kullanır: Ben postalarının seçtiğinizde
- (IBAction)shareButtonPressed:(id)sender {
NSArray *activityItems = @[@"results.csv", [self.object exportToCSV]];
UIActivityViewController *shareScreen = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:shareScreen animated:YES completion:nil];
}
seçeneği, csv dosyası ekli değil. Sadece "results.csv" metnine sahip "
Neyi yanlış yapıyorum?
Dosyaya baktınız mı? Tamam mı? Eğer simülasyon aracının klasörde dosyayı açabilirsiniz ('~/Library/Application Support/iPhone Simülatörü/...'; Mac OS X Finder 'Library' klasörü görmek için' option' tuşunu basılı tutun gerekebilir) ve dosyanın tamam olduğunu onaylayın. Genellikle sadece 'NSString' örnek yöntemi' writeToFile' kullanarak dize tasarruf sağlayacaktır. de 'NSFileManager' ve' NSFileHandle' şeyler ortadan kaldırır. – Rob
Ama soruya yanıt olarak, sorun 'fileExistsAtPath' hattında olarak görünecektir. Sen "belgeler dizini yoksa, o zaman dosyası oluşturmak" diyerek görünmektedir. Muhtemelen 'filePath',' docPath' değil. – Rob