核心数据(神奇的记录)+ WatchKit扩展+可可触摸框架
这里是我的最新动态:核心数据(神奇的记录)+ WatchKit扩展+可可触摸框架
我现在有
- 一个iPhone应用程序
- 一个WatchKit扩展
- 一个Cocoa Touch框架,可容纳我所有的共享类
我想完成的任务是,它拥有一个持久性存储(Core Data),可以在我的iPhone应用程序和WatchKit Extension之间共享。
因此,这是我到目前为止
- 完成创建应用程序组有一个共同的容器。
- 添加核心数据模型(Model.xcdatamodeld)到我的Cocoa Touch框架。
- 创建一个实体在这个模型
- 创建一个NSMangedObject子类此实体,并加入是我的可可触摸框架
- 增加了一个DataManager类到我的可可触摸框架
这里什么初始化中我DataManager的样子
public init() {
let sharedContainerURL: NSURL? = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.company.Project")
if let sharedContainerURL = sharedContainerURL {
let storeURL = sharedContainerURL.URLByAppendingPathComponent("Model.sqlite")
MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreAtURL(storeURL)
let station: Station? = Station.MR_createEntity()
}
}
这个问题我运行到
当我从iPhone应用程序的AppDelegate启动我的DataManager时,没有发生崩溃,但station
将为零。
当我更换let stations: [Station]? = Station.MR_findAll() as? [Station]
最后一行的应用程序崩溃,并显示以下错误:A fetch request must have an entity.
我找遍了所有的GitHub上SO和神奇纪录的问题,但找不到任何东西推我正确的方向。所有的帮助非常感谢。
感谢Leo Natan的评论我现在认识到我应该将我的核心数据存储在我的iPhone应用程序的沙盒以及我的WatchKit应用程序的沙盒中。而不是在共享容器内,就像我试图。
当为Watch OS 2构建时,我将能够使用WatchKit Connectivity Framework来保持两个数据库同步。与此同时,我可以使用像MMWormhole这样的解决方案来实现同样的目标。
我已经完成我的任务在我的现场应用程序与手表和iPhone都。我不需要2个商店。和MMWormhole
是一个很好的帮助即时回拨双方。我也处理了手表的事件handleWatchKitExtensionRequest.
同步是正确的,并运作良好。
我已关注此论坛。 - http://www.makeandbuild.com/blog/post/watchkit-with-shared-core-data
希望这可以帮助你。
无论你实施什么,都要考虑到watchOS 2扩展实际上在手表上运行。阅读转换指南中的管理数据部分:https://developer.apple.com/library/prerelease/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/UpdatetheAppCode.html –