核心数据(神奇的记录)+ 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和神奇纪录的问题,但找不到任何东西推我正确的方向。所有的帮助非常感谢。

+2

无论你实施什么,都要考虑到watchOS 2扩展实际上在手表上运行。阅读转换指南中的管理数据部分:https://developer.apple.com/library/prerelease/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/UpdatetheAppCode.html –

感谢Leo Natan的评论我现在认识到我应该将我的核心数据存储在我的i​​Phone应用程序的沙盒以及我的WatchKit应用程序的沙盒中。而不是在共享容器内,就像我试图。

当为Watch OS 2构建时,我将能够使用WatchKit Connectivity Framework来保持两个数据库同步。与此同时,我可以使用像MMWormhole这样的解决方案来实现同样的目标。

我已经完成我的任务在我的现场应用程序与手表和iPhone都。我不需要2个商店。和MMWormhole是一个很好的帮助即时回拨双方。我也处理了手表的事件handleWatchKitExtensionRequest.

同步是正确的,并运作良好。

我已关注此论坛。 - http://www.makeandbuild.com/blog/post/watchkit-with-shared-core-data

希望这可以帮助你。