Ich schreibe eine App, die Freigabeerweiterung hat, um ausgewählte Foto in meiner App lokalen Speicher von iPhone Fotogalerie zu speichern. NSData WriteToFile gibt YES zurück, aber ich konnte die gespeicherte Datei nicht in dem Verzeichnis finden, in dem ich beim Schreiben Pfad angegeben habe. Kurz gesagt, NSData WriteToFile kann ein Foto nicht im angegebenen Pfad speichern.NSData WriteToFile Fehler beim Speichern eines Fotos aus der Galerie durch Share Extension
Unten ist mein Code.
- (IBAction)acceptButtonTapped:(id)sender
{
__block UIImage *photo;
for (NSExtensionItem *item in self.extensionContext.inputItems)
{
for (NSItemProvider *itemProvider in item.attachments)
{
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage])
{
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error) {
if(image)
{
dispatch_async(dispatch_get_main_queue(), ^{
photo = image;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy_MM_dd_hh_mm_ss"];
NSString *fileName;
fileName = [NSString stringWithFormat:@"%@.jpeg",[formatter stringFromDate:[NSDate date]]];
dataPath = [dataPath stringByAppendingPathComponent:fileName];
NSData * imageData = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)];
BOOL isdone = [imageData writeToFile:dataPath atomically:NO];
NSLog(@"%u", isdone);
});
}
}];
break;
}
}
}
[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];
}
Jede Hilfe wäre sehr spürbar.
Vielen Dank.
Bitte überprüfen Sie 'dataPath', d. H. Enthält es den Pfad Ihres lokalen Speichers wie DocumentDirectory? –
es ist in DocumentDirectory, ich habe einen Ordner in DocumentDirectory erstellt und in das ich das Foto speichern. Hat es ein Problem damit? –
Protokollieren Sie den Pfad zur Debug-Konsole im Simulator, kopieren Sie dann alles außer dem Dateinamen in die Zwischenablage, wechseln Sie zum Finder, drücken Sie den Befehl shift G und fügen Sie den Pfad in das Dialogfeld "Gehe zu Ordner" ein. Schau was passiert. Protokollieren Sie auch den Pfad zum Dokumentenverzeichnis in 'applicationDidFinishLaunching' und stellen Sie sicher, dass Ihr Pfad auf eine Datei in diesem Verzeichnis zeigt. –