Ton*_*old 11 cocoa-touch core-data ios uidocumentinteraction
我在解读Apple的文档UIManagedDocument方面遇到了很多麻烦,特别是以下方法:
- (id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error- (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error- (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error有没有人成功地将其他内容保存到UIManagedDocument包中的"添加内容"目录中?我希望使用UUID作为文件名(具有正确的文件扩展名)将直接图像(PNG,JPEG等)和视频(m4v等)保存到此目录中,并将对这些单个文件的引用存储为NSString我的文件路径持久存储.
Ton*_*old 12
幸得苹果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;
}
Run Code Online (Sandbox Code Playgroud)
UIManagedDocument将在需要时调用这些方法,自动将需要保存的内容保存到AdditionalContent目录中的文档包中.
如果您需要强制保存,只需在您的UIManagedDocument实例上调用以下内容:
[self updateChangeCount:UIDocumentChangeDone];
Run Code Online (Sandbox Code Playgroud)
目前,我没有将它用于图像和视频 - 但这个例子应该足以让你满足.
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |