私は、選択した写真をiphoneフォトギャラリーから自分のアプリのローカルストレージに保存する拡張機能を持つアプリを書いています。 NSData WriteToFileはYESを返しますが、書き込み中にパスを渡したディレクトリに格納されたファイルが見つかりませんでした。 したがって、短いNSData WriteToFileは、指定されたパスに写真を保存できません。NSData WriteToFileがギャラリーからShare Extension経由で写真を保存するときに失敗する
以下は私のコードです。
- (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];
}
どのようなヘルプでも相当な評価が得られます。
ありがとうございます。
'dataPath'を確認してください。つまり、DocumentDirectoryのようなローカルストレージのパスが含まれていますか? –
それはDocumentDirectoryにあり、私はDocumentDirectoryの中にフォルダを作成しており、その中に写真を保管しています。それに何か問題がありますか? –
シミュレータ上のデバッグコンソールへのパスを記録し、ファイル名以外のすべてをクリップボードにコピーし、ファインダに移動し、コマンドシフトGを押してパスを[フォルダに移動]ダイアログボックスに貼り付けます。何が起こるか見る。 'applicationDidFinishLaunching'のドキュメントディレクトリへのパスも記録し、パスがそのディレクトリ内のファイルを指していることを確認してください。 –