Così sto creando un file .csv e quindi consentendo all'utente di condividerlo utilizzando UIActivityViewController.creazione e utilizzo di un file .csv con UIActivityViewController
Il mio codice per creare il file CSV restituirà il NSURL del file:
- (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];
}
e poi la mia attività utilizza che NSURL per avviare l'UIActivityViewController:
- (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];
}
Quando seleziono la posta un opzione, il file csv non è allegato. ha solo il testo "results.csv"
cosa sto facendo di sbagliato?
Hai guardato il file? Va bene? Puoi aprire il file nella cartella del tuo simulatore ('~/Library/Application Support/iPhone Simulator/...', potresti dover tenere premuto il tasto 'option' per vedere la cartella' Library' nel tuo Finder di Mac OS X) e confermare che il file è ok. Generalmente salverei la stringa semplicemente usando il metodo di istanza 'NSString'' writeToFile'. Elimina anche gli oggetti 'NSFileManager' e' NSFileHandle'. – Rob
Ma in risposta alla tua domanda, il problema sembra essere nella tua riga 'fileExistsAtPath'. Sembra che tu stia dicendo "se la directory dei documenti non esiste, quindi crea il file". Probabilmente intendevi 'filePath' lì, non' docPath'. – Rob