iCloud 和 NSFileWrapper:在“设置”中显示为 2 个不同的文件

2024-03-21

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

我期望它显示“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;        
}

但仍然没有雪茄。有人知道问题是什么吗?谢谢!


想通了这一点。问题是您需要有 3 个字母的文件扩展名。我的只有 2 个字母:“.cp”。我将其切换为“.cap”并且它起作用了:P

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iCloud 和 NSFileWrapper:在“设置”中显示为 2 个不同的文件 的相关文章

随机推荐