Кредит идет к Apple DTS за помощь в понимании этого класса. Я поделюсь некоторыми примерами, с которыми они мне здесь помогли (слегка изменены).
ОК, так что в основном это работает так: подкласс UIManagedDocument
и реализует следующие методы (где свойство extraInfo
- это просто NSDictionary, реализованный в нашем подклассе):
- (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error
{
NSURL *myURL = [absoluteURL URLByAppendingPathComponent:@"AdditionalInformation.plist"];
self.extraInfo = [NSDictionary dictionaryWithContentsOfURL:myURL];
return YES;
}
- (id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error
{
if (!self.extraInfo) {
return [NSDictionary dictionaryWithObjectsAndKeys: @"Picard", @"Captain", [[NSDate date] description], @"RightNow", nil];
} else {
NSMutableDictionary *updatedFriendInfo = [self.extraInfo mutableCopy];
[updatedFriendInfo setObject:[[NSDate date] description] forKey:@"RightNow"];
[updatedFriendInfo setObject:@"YES" forKey:@"Updated"];
return updatedFriendInfo;
}
}
- (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error
{
if (content) {
NSURL *myURL = [absoluteURL URLByAppendingPathComponent:@"AdditionalInformation.plist"];
[(NSDictionary *)content writeToURL:myURL atomically:NO];
}
return YES;
}
UIManagedDocument
будет вызывать эти методы, когда это необходимо, автоматически сохраняя все, что вам нужно сохранить, в пакет документов в каталоге AdditionalContent
.
Если вам нужно принудительно сохранить, просто позвоните в ваш экземпляр UIManagedDocument
:
[self updateChangeCount:UIDocumentChangeDone];
В настоящее время я не использую это для изображений и видео - но пример должен дать вам достаточно, чтобы уйти.