NSFileWrapper 기반 UIDocument를 사용하는 앱이 있습니다. 내 파일 래퍼는 두 개의 하위 파일 "photo.data"와 "photo.metadata"가있는 "XXX.cp"라는 디렉토리입니다. 그것은 저장하고 내가 설정에 갈 때 부하 문서는 잘하지만 \ 저장 \ 알 수없는 관리를 보인다 하위 파일은 별도로 나열되어 있습니다iCloud 및 NSFileWrapper : 설정에서 두 개의 다른 파일로 표시
내가 "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 자입니다. 내 디렉터리 기반 파일 래퍼 확장명을 .tfx 사용합니다. 최근에 필자는 랩퍼 파일을 내 유비쿼터스 컨테이너의 별도 폴더에 넣기로 결심했다. SyncDocuments를 호출한다. 그렇게하면 개별 파일이 사용자에게 표시되지 않습니다. 하지만 내 UIDocument 하위 클래스 파일은 사용자가 직접 상호 작용하지 않기 때문에 실제로 원하는 것입니다. –
나는 똑같은 문제점이 있지만 내 파일 확장자에는 3 개의 문자 (및 아이콘)가 있습니다. 나는 이것이 수출 된 UTI에서 물고기 같은 환경이라고 생각한다. 필자의 직감은 iCloud에서 어떤 종류의 캐싱이 일어나고 확장자를 .cp에서 .cap로 변경하면 문제가 해결되었다는 것입니다. – auco
헤이 레이는 튜토리얼을 좋아하지만 아직 문제가 있습니다. 래퍼를 패키지로 표시 할 수는 있지만 nsmetadataquery는 패키지를 볼 수 없습니다. *가있는 모든 문서를 검색하는 경우 이벤트가 아닙니다. 내 첫 번째 문서 유형은 작동하지만 내 이미지는 작동하지 않습니다 – zambono