bow*_*ann 14 xcode core-data ios icloud magicalrecord
我在最后几天都在苦苦挣扎,以便为我使用MagicalRecord框架管理的数据启用iCloud支持.
我做了关于配置文件的所有内容,以及xCode中的所有设置.在代码而不是调用
[MagicalRecord setupAutoMigratingCoreDataStack];
Run Code Online (Sandbox Code Playgroud)
我在打电话
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"AppIDFromiTunesConnect.com.companyName.myAppName" localStoreNamed:@"whatever"];
Run Code Online (Sandbox Code Playgroud)
我尝试通过在iPhone模拟器上触发iCloud同步来模拟同步.但似乎没有任何事情发生.我在developer.iCloud.com上看不到任何内容.
问题:任何人都有使用MagicalRecord的iCloud启动并运行?你能解释一下如何完成它吗?
好的伙计们,我想我已经开始工作了.
更新最初它对我有用,但我有一些非常奇怪的效果,如果你从iCloud注销无处不在的容器被删除的事实让我考虑替代解决方案.现在我使用Ensembles库,我对此非常满意.结束更新
我只是拉了我自己2年前写的测试应用程序,它没有CoreData也没有iCloud,它似乎工作得很好.它在我的iPhone和iPhone模拟器上同步数据库.让我疯狂的一件小事是我在https://developer.icloud.com上看不到任何东西.
现在我要为我的分布式应用程序做同样的事情.这正是我所做的:
[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.
Run Code Online (Sandbox Code Playgroud)
这种方法对我有用.另一个较短的iCloud设置调用方法(没有ContentNameKey)没有抛出异常,但没有正常工作.我想,你只需要说出ContentNameKey.
您可以在此处获取Developer Portal上的容器ID.我知道,这似乎是一个非常详细的说明,但我希望我很清楚,上面函数中的"iCloudContainer"字符串实际上是iCloudContainerID,应该从Developer Portal中检索.
现在尝试至少在模拟器上运行应用程序.如果您在日志中没有"iCloud not enabled"消息,那么您将处于中途.
注册负责所有Core Data操作的对象以侦听NotificationCenter
以下事件:
NSPersistentStoreCoordinatorStoresWillChangeNotification
NSPersistentStoreCoordinatorStoresDidChangeNotification
NSPersistentStoreDidImportUbiquitousContentChangesNotification
像这样:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(storesWillChange:)
name:NSPersistentStoreCoordinatorStoresWillChangeNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
并正确处理更改.
艰苦的工作仍有待完成,现在取决于你的项目,我不能单独给你任何建议.
对我来说,问题是:
但我希望在iCloud官方Apple手册中找到我的问题的所有答案.
我很高兴为你避免了几天的头痛!如果此解决方案适用于您的项目,请撰写评论!
归档时间: |
|
查看次数: |
1108 次 |
最近记录: |