为了进一步深入学习,过去几天我已经阅读了很多关于将iCloud备份和/或更高级的同步功能添加到使用UIManagedDocument来获取其核心数据堆栈的现有应用程序。我看到有些人指的是iOS 7中的更新,这些更新包含了2011年和2012年的许多文章(以及Apple自己的文档)(这似乎是大多数文章中最常见的日期[通过谷歌搜索发现]有点“过时”。总的来说,截至2014年5月,在应用程序中添加iCloud支持的位置是什么?答案似乎从“使用UIManagedDoc我只添加了几行代码”到更多涉及的示例,这些示例利用本地和云中数据更改的更高级通知。
我还无法解决的问题是,在iCloud启用的设备上添加iCloud基本备份(现在包括用于基本测试的模拟器,显然),从现在开始,在哪里开始?比方说,如果根据斯坦福核心数据讲座(见下文)查看代码,添加iCloud同步所需的步骤是什么? iOS 7实际上改变了什么来简化这个?
对iOS 7进行引擎盖下更新是否真的只需要“几行”代码就可以获得以下代码,以便为基本的iCloud支持做好准备?
我正试图了解最新的做法,就像现在一样,在使用UIManagedDocument的应用程序中接近基本的iCloud支持。下面的代码有哪些更改,它已经在Documents目录中创建了一个doc并使用了那个单个文档,需要做什么?
Apple自己的文档对我没什么帮助。我想我只需要看一下我已经理解的代码,以便为我提供一个参考点。
来自Hegarty的讲座,斯坦福大学:
-(void)useDemoDocument
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"Demo Document"];
UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
//create
[ document saveToURL:url
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
self.context = document.managedObjectContext;
}
}];
} else if (document.documentState == UIDocumentStateClosed){
//open
[document openWithCompletionHandler:^(BOOL success) {
if (success) {
self.context = document.managedObjectContext;
//[self refresh];
}
}];
} else {
//try to use it
self.context = document.managedObjectContext;
}
}