我有一个应用程序,使用的UIDocument是基于NSFileWrapper的。我的文件包装是一个名为"XXX.cp“的目录,有两个子文件"photo.data”和"photo.metadata“。它似乎可以很好地保存和加载文档,但是当我转到Settings\Manage Storage\Unknown时,子文件会单独列出:

我希望它显示"XXX.cp“,而不是这两个子文件。我想我已经正确地设置并导出了文档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;
}但还是没有雪茄。有人知道问题出在哪里吗?谢谢!
发布于 2012-04-23 21:25:40
我想通了。问题是你需要一个3个字母的文件扩展名。我的只有两个字母:".cp“。我把它换成了".cap“,它起作用了:P
发布于 2012-06-16 09:08:16
我没有将我的UTI改为三个字符。它仍然是11个字符。一开始,我看到了Ray报告的相同问题。我查看了更多的文档,并在"iOS应用程序编程指南“-”应用程序相关资源“中”声明您的应用程序支持的文档类型“的段落下发现,”对于每种文档类型,您必须至少提供以下信息:
我提供了名称和文件类型,但没有提供图标。因此,我在22秒内创建了一个最棒的小文档图标,将其添加到我的项目中,添加到目标的文档类型中,然后在我的iPad、设置、iCloud、管理存储、MyApp上,我只看到了文件包装器的名称,NSMetadataItemDisplayNameKey样式!
发布于 2013-02-21 06:38:32
我也有同样的问题,但是我的扩展有三个字符,而且我还有一个图标。但是,在阅读完LSItemContentTypes之后,我尝试删除CFBundleDocumentTypes部分中的类型(在第二个图像中“this comment:com.razeware.captionedPhoto”在“文档类型”下),并且成功了。
我还注意到WWDC演示"UIDocument和iCloud“也没有设置LSItemContentType。在我看来,这是一个巨大的错误,因为the docs清楚地指出应该有一个文档类型。
https://stackoverflow.com/questions/10260299
复制相似问题