Ho un app che utilizza un'UIDocument che si basa NSFileWrapper. Il mio file wrapper è una directory chiamata "XXX.cp", con due file secondari "photo.data" e "photo.metadata". Sembra di salvare e caricare i documenti bene, però quando vado a Impostazioni \ Gestisci archiviazione \ Sconosciuto sub-file sono elencati separatamente:iCloud & NSFileWrapper: Questa è come 2 diversi file in Impostazioni
mi aspettavo di mostrare "XXX.cp" invece di questi due file secondari. Penso di avere il documento UTI istituito ed esportato correttamente:
E penso che sto creando correttamente i wrapper di file (soprattutto perché si legge/scrive benissimo):
- (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;
}
Ma ancora nessun sigaro. Qualcuno sa qual è il problema? Grazie!
Ho riscontrato questo problema e ho 3 lettere per la mia estensione di file. Io uso l'estensione .tfx per il mio file wrapper basato su directory. Recentemente ho deciso di mettere i miei file wrapper in una cartella separata nel mio contenitore ubiquitario che chiamo SyncDocuments. In questo modo i singoli file non vengono visualizzati per l'utente. Ma questo è quello che voglio veramente perché i miei file di sottoclasse UIDocument non sono pensati per gli utenti con cui interagire direttamente. –
Ho esattamente lo stesso problema, ma la mia estensione di file ha tre lettere (e un'icona). Penso che questo sia un po 'di pesce nell'UTI esportato. La mia impressione è che ci sia un qualche tipo di memorizzazione nella cache in iCloud e che la modifica dell'estensione da .cp a .cap risolva qualcosa che non funziona. – auco
Hey Ray ama i tuoi tutorial, ma sto ancora avendo un problema. Posso far visualizzare i miei wrapper come pacchetto ma poi mio nsmetadataquery non li vede. Non evento se cerco tutti i documenti con *. Il mio primo tipo di documento funziona, ma le mie immagini non lo sono – zambono