9

NSFileWrapperベースのUIDocumentを使用するアプリがあります。私のファイルラッパーは「XXX.cp」という名前のディレクトリで、「photo.data」と「photo.metadata」の2つのサブファイルがあります。ドキュメントの保存と読み込みは正常に行われているようですが、[設定]、[ストレージの管理]、[不明]に移動すると、サブファイルが個別に一覧表示されます。

設定

これらの2つのサブファイルの代わりに「XXX.cp」が表示されることを期待していました。ドキュメントUTIを適切に設定し、エクスポートしたと思います。

UTI UTIエクスポート

そして、私はファイルラッパーを正しく作成していると思います(特に読み取り/書き込みが正常であるため):

- (void)encodeObject:(id<NSCoding>)object toWrappers:(NSMutableDictionary *)wrappers preferredFilename:(NSString *)preferredFilename {    
    @autoreleasepool {                
        NSMutableData * data = [NSMutableData data];    
        NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];    
        [archiver encodeObject:object forKey:@"data"];    
        [archiver finishEncoding];   
        NSFileWrapper * wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:data];    
        [wrappers setObject:wrapper forKey:preferredFilename];    
    }    
}        

- (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {        
    if (self.captionedPhotoMetadata == nil || self.captionedPhoto == nil) {    
        *outError = [[NSError alloc] initWithDomain:CaptionedPhotoErrorDomain code:CaptionedPhotoInvalidDocument userInfo:[NSDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Invalid document!", @""), NSLocalizedDescriptionKey, nil]];    
        return nil;        
    }    
    NSMutableDictionary * wrappers = [NSMutableDictionary dictionary];    
    [self encodeObject:self.captionedPhotoMetadata toWrappers:wrappers preferredFilename:METADATA_FILENAME];    
    [self encodeObject:self.captionedPhoto toWrappers:wrappers preferredFilename:DATA_FILENAME];       
    NSFileWrapper * fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:wrappers];    
    return fileWrapper;        
}

しかし、それでも葉巻はありません。誰もが問題が何であるか知っていますか?ありがとう!

4

3 に答える 3

5

これを理解しました。問題は、3文字のファイル名拡張子が必要なことでした。私の文字は「.cp」の2文字だけでした。「.cap」に切り替えて動作しました:P

于 2012-04-23T13:25:39.500 に答える
1

UTIを3文字に変更しませんでした。11文字のままです。最初は、レイが報告しているのと同じ問題を見ていました。ドキュメントを詳しく調べたところ、「iOSアプリプログラミングガイド」-「アプリでサポートされているドキュメントタイプの宣言」の段落の「アプリ関連リソース」で、「ドキュメントタイプごとに、少なくとも次の情報を提供する必要があります。

  • 名前
  • アイコン
  • ファイルの種類

名前とファイルタイプを指定しましたが、アイコンは指定していません。だから私は22秒でできる最も素晴らしい小さなドキュメントアイコンを作り上げ、それをプロジェクトに追加し、ターゲットのドキュメントタイプに追加しました、そして私のiPad、設定、iCloud、ストレージの管理、MyAppでは、ファイルラッパーしか表示されません名前、NSMetadataItemDisplayNameKeyスタイル!

于 2012-06-16T01:08:15.767 に答える
0

同じ問題が発生しましたが、拡張機能に3つの文字があり、アイコンもありました。ただし、このコメントを読んだ後、CFBundleDocumentTypesセクションのLSItemContentTypes(「ドキュメントタイプ」の下の2番目の画像の「タイプ:com.razeware.captionedPhoto」)を削除しようとしましたが、機能しました。

また、WWDCデモ「UIDocumentandiCloud」にもLSItemContentTypeが設定されていないことに気づきました。ドキュメントにはドキュメントタイプが必要であると明確に記載されているため、私には大きなバグのように思えます。

于 2013-02-20T22:38:31.760 に答える