Tôi có một ứng dụng sử dụng UIDocument dựa trên NSFileWrapper. Trình bao bọc tệp của tôi là một thư mục có tên "XXX.cp", với hai tệp phụ "photo.data" và "photo.metadata". Có vẻ như để tiết kiệm và tài liệu tải tốt, tuy nhiên khi tôi đi đến Settings \ Quản lý kho \ Unknown tiểu tập tin được liệt kê riêng:iCloud & NSFileWrapper: Hiển thị dưới dạng 2 tệp khác nhau trong Cài đặt
tôi đã mong đợi nó để hiển thị "XXX.cp" thay vì hai tệp phụ này. Tôi nghĩ rằng tôi có tài liệu UTI thành lập và xuất khẩu đúng:
Và tôi nghĩ tôi đang tạo ra những gói tập tin một cách chính xác (đặc biệt là kể từ khi nó đọc/viết tốt):
- (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;
}
Nhưng vẫn không có xì gà. Bất cứ ai biết vấn đề là gì? Cảm ơn!
Tôi cũng gặp sự cố này và tôi có 3 chữ cái cho phần mở rộng tệp của mình. Tôi sử dụng phần mở rộng .tfx cho trình bao bọc tệp dựa trên thư mục của tôi. Gần đây tôi đã quyết định đặt các tệp trình bao bọc của mình trong một thư mục riêng biệt trong vùng chứa phổ biến của tôi, tôi gọi SyncDocuments. Bằng cách đó, các tệp riêng lẻ không hiển thị cho người dùng. Nhưng đây là những gì tôi thực sự muốn vì các tệp lớp con UIDocument của tôi không có nghĩa là người dùng tương tác trực tiếp. –
Tôi có cùng một vấn đề, nhưng phần mở rộng tệp của tôi có ba chữ cái (và một biểu tượng). Tôi nghĩ rằng đây là một số thiết lập fishy trong UTI xuất khẩu. Linh cảm của tôi là, có một số loại bộ nhớ đệm đang diễn ra trong iCloud và thay đổi phần mở rộng từ .cp thành .cap đã sửa lỗi đã bị hỏng. – auco
Hey Ray yêu các hướng dẫn của bạn, nhưng tôi vẫn gặp sự cố. Tôi có thể lấy các trình bao bọc của mình để hiển thị dưới dạng gói nhưng sau đó nsmetadataquery của tôi không nhìn thấy chúng. Không phải sự kiện nếu tôi tìm kiếm tất cả tài liệu có dấu *. Loại tài liệu đầu tiên của tôi hoạt động, nhưng hình ảnh của tôi không phải là – zambono