このクラスを理解するのを手伝ってくれたApple DTSのおかげです。彼らが私を助けてくれた例のいくつかをここで共有しています (わずかに変更されています)。
OK、基本的には次のように機能します: 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];
現時点では、これを画像やビデオには使用していませんが、この例で十分に理解できるはずです。