So erstellen ich eine CSV-Datei und dann ermöglicht es dem Benutzer, es mit dem UIActivityViewController zu teilen.Erstellen und Verwenden einer CSV-Datei mit UIActivityViewController
Mein Code der CSV-Datei wird wieder die NSURL der Datei zu erstellen:
- (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];
}
und dann meine Tätigkeit verwendet, dass NSURL die UIActivityViewController einzuleiten:
- (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];
}
Wenn ich Post ein wählen Option, die CSV-Datei ist nicht angehängt. es hat nur den Text "results.csv"
was mache ich falsch?
Haben Sie sich die Datei angesehen? Ist es o.k? Sie können die Datei im Ordner Ihres Simulators öffnen ('~/Library/Application Support/iPhone Simulator/...'; Sie müssen möglicherweise die 'Option'-Taste gedrückt halten, um den 'Library'-Ordner in Ihrem Mac OS X Finder zu sehen) und bestätige, dass die Datei in Ordnung ist. Normalerweise würde ich die Zeichenfolge nur mit der 'NSString'-Instanzmethode' writeToFile' speichern. Beseitigt auch die NSFileManager- und NSFileHandle-Dateien. – Rob
Aber als Antwort auf Ihre Frage scheint das Problem in Ihrer Zeile 'fileExistsAtPath' zu liegen. Sie scheinen zu sagen "wenn das Dokumentenverzeichnis nicht existiert, dann erstellen Sie die Datei". Du meinst wahrscheinlich 'filePath' dort, nicht' docPath'. – Rob