ios – 如何使用MagicalRecord(核心数据)启动运行iCloud?

前端之家收集整理的这篇文章主要介绍了ios – 如何使用MagicalRecord(核心数据)启动运行iCloud?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了使iCloud支持使用MagicalRecord框架管理的数据,我一直在努力处理所有最后的日子.

我做了一切关于配置文件,以及xCode中的所有设置.在代码而不是调用

[MagicalRecord setupAutoMigratingCoreDataStack];

我在打电话

[MagicalRecord setupCoreDataStackWithiCloudContainer:@"AppIDFromiTunesConnect.com.companyName.myAppName" localStoreNamed:@"whatever"];

我尝试通过在iPhone模拟器上触发iCloud Synchronization来模拟同步.但似乎没有发生.我在developer.iCloud.com看不到任何东西.

问题:任何人都有iCloud与MagicalRecord一起运行?你能解释一下如何完成吗?

解决方法

好的,我想我得到了工作.

更新最初它为我工作,但我有一些非常奇怪的效果,事实上,如果你从iCloud注销,无处不在的容器被删除让我想到替代解决方案.现在我使用Ensembles图书馆,大多数人都非常满意.结束更新

我只是在2年前写了我自己的测试应用程序,没有CoreData和iCloud,它似乎工作不错.它通过我的iPhone和iPhone模拟器同步数据库.推动我坚强的一件事是,我还没有看到任何东西在https://developer.icloud.com ..

现在我要为我的分布式应用程序做同样的事情.这正是我所做的:

>所有这些东西的好处是,您几乎不必在开发者门户网站上做任何事情(例如创建和下载配置文件,甚至不需要创建应用程序ID) – XCode 6.3.2为您做到这一切;当然,如果你知道订单.首先,转到您的目标设置 – >功能,并启用iCloud. Xcode执行添加授权文件,在开发人员门户上创建应用程序ID并创建iCloud容器.取消选中“键值存储”,并选中“iCloud文档”.

>我假设你正在使用MagicalRecord,你设置的Core Data stack如下:

[MagicalRecord setupAutoMigratingCoreDataStack];

在这种情况下,MagicalRecord会通过调用[MagicalRecord defaultStoreName]来创建一个可以获得的名称的本地存储.您将需要在iCloud安装程序调用中注明这一项.所以我现在在AppDelegate.m中的代码是:

NSString *defaultStoreName = [MagicalRecord defaultStoreName];
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"Container ID from Developer Portal (as on image)"
                                      contentNameKey:@"DataStorage" // It seems like you can write whatever you want here
                                     localStoreNamed:defaultStoreName // Unless not specifically named earlier
                             cloudStorePathComponent:@"stuff"]; // Seems like you can write whatever stuff you want.

这种方法对我有用.另一个更短的iCloud安装调用方法(没有ContentNameKey)没有抛出异常,但没有正常工作.我猜,你只需要声明ContentNameKey.

这里是您在开发者门户网站上获取容器ID的位置.我知道,它似乎是一个非常详细的说明,但我希望对我来说,上面的函数中的“iCloudContainer”字符串实际上是iCloudContainerID,应该从开发人员门户中检索.

>转到设备设置 – > iCloud – > iCloud驱动器并启用它.使用您的帐户登录到iCloud.这对整个事情来说至关重要.

>现在尝试至少在模拟器上运行应用程序.如果您在日志中没有“iCloud未启用”消息,那么您就是中途.
>注册负责所有Core Data操作的对象,以监听以下事件的NotificationCenter:
NSPersistentStoreCoordinatorStoresWillChangeNotification
NSPersistentStoreCoordinatorStoresDidChangeNotification
NSPersistentStoreDidImportUbiquitousContentChangesNotification

喜欢这个:

[[NSNotificationCenter defaultCenter] addObserver:self
           selector:@selector(storesWillChange:)
               name:NSPersistentStoreCoordinatorStoresWillChangeNotification
             object:nil];

并妥善处理变更.

艰苦的工作还没有完成,现在这取决于你的项目,我不能单独给你任何建议.

对我来说,问题是:

>如何对远程商店的更改做出反应
>如何合并不同的数据并避免重复
>如果iCloud容器为空,如何避免完整的数据丢失

但是,我希望能在official Apple Manual to iCloud中找到我所提问题的所有答案.

我很高兴为您避免了几天的头疼!如果此解决方案适用于您的项目,请写下评论

猜你在找的iOS相关文章