2015-06-27 65 views
7

這裏是我的最新動態:核心數據(神奇的記錄)+ 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 –

回答

0

感謝Leo Natan的評論我現在認識到我應該將我的核心數據存儲在我的i​​Phone應用程序的沙盒以及我的WatchKit應用程序的沙盒中。而不是在共享容器內,就像我試圖。

當爲Watch OS 2構建時,我將能夠使用WatchKit Connectivity Framework來保持兩個數據庫同步。與此同時,我可以使用像MMWormhole這樣的解決方案來實現同樣的目標。

0

我已經完成我的任務在我的現場應用程序與手錶和iPhone都。我不需要2個商店。和MMWormhole是一個很好的幫助即時回撥雙方。我也處理了手錶的事件handleWatchKitExtensionRequest.

同步是正確的,並運作良好。

我已關注此論壇。 - http://www.makeandbuild.com/blog/post/watchkit-with-shared-core-data

希望這可以幫助你。