Ответ 1
Кредит идет Apple DTS за то, что помог мне понять этот класс. Я делюсь некоторыми примерами, которые они мне помогли (немного измененными).
ОК, поэтому в основном он работает следующим образом: subclass 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];
В настоящее время я не использую это для изображений и видео, но пример должен дать вам достаточно, чтобы уйти.