2014-11-21 44 views
1

我發現了一些類似的問題,但沒有什麼能滿足我的需求。我在Swift中開發了一個簡單的數字化應用程序,它呈現圖像並允許我使用模擬器數字化圖像中的特定點。使用在一個項目中創建的核心數據作爲另一個項目的輸入

我使用核心數據來保存數據。一個實體(「Coursemap」)具有圖像(二進制數據)和一些元數據(字符串)的屬性。 Coursemap實體與「Points」實體有一對多的關係。 Points實體爲圖像中特定點的x/y座標定義屬性。數字化儀應用程序運行良好;我可以使用Core Data數字化並保存多個圖像。在我的應用程序的最終版本中,我可能需要大約50-60幅數字化圖像。

我想要做的就是使用我的數字化儀應用程序輸出中的數據作爲我正在開發的iPad遊戲的輸入。所以我基本上想要將我的數字化儀項目中創建的核心數據文件複製到我的遊戲項目中,以便我的遊戲應用程序可以使用數字化圖像。有沒有辦法做到這一點?核心數據是處理這個問題的最佳方法嗎?

我試過到目前爲止:我的名字的兩個項目是相同的,但讓他們在不同的文件夾,如:
~/Library/Developer/CoreSimulator/Devices/…/Documents.
~/digitizer/myApp and ~/games/myApp.

的數字化核心數據文件的文件夾中創建

當我運行遊戲應用程序時,似乎期望核心數據文件位於同一目錄中(這就是爲什麼我將這兩個項目命名爲相同的原因)。當遊戲應用程序嘗試獲取數據時,我收到錯誤消息,「用於打開商店的模型與用於創建商店的模型不兼容」。我仔細檢查了數據模型,它們是相同的。

對此的任何想法?謝謝。

+0

你確定這些模型是相同的嗎?嘗試將xcdatamodeld文件從一個項目複製到另一個項目。 – pbasdf 2014-11-22 11:19:15

+0

謝謝,@pbasdf。我今天晚些時候會試一試,然後再報告。 – Dogus 2014-11-22 18:01:24

+0

@pbasdf將xcdatamodeld文件從一個項目複製到另一個項目不起作用(當我點擊項目導航器中的app.xcdatamodeld文件時,什麼都不會顯示,然後重新開始並重新創建我的(非數字化器)應用程序包括非常仔細地創建數據模型,現在一切正常,我可以運行數字化儀應用程序來創建數據,然後使用先前創建的數據作爲輸入來運行我的遊戲應用程序。 – Dogus 2014-11-23 05:16:18

回答

0

我意識到類似的東西: - 它複製到其他項目 - - 從模擬器文件夾 選擇你的預充式源碼文件運行時,您的其他項目的檢查,如果一個SQLite結構存在,如果它不通過將你的包中的sqlite文件複製到文檔文件夾來創建它:

if(![[NSFileManager defaultManager]fileExistsAtPath:coreDataDatabase.path]) 
     { 
      url = coreDataDatabase; 
      [[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:NULL]; 

      url = [url URLByAppendingPathComponent:@"StoreContent"]; 
      [[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:NULL]; 

      url = [url URLByAppendingPathComponent:@"persistentStore"]; 

      // copy the sqlite file to /Documents/<YourApp>/StoreContent/persistentStore 
      NSArray *stringParts = [kCoreDataPreloadedDatabase componentsSeparatedByString:@"."]; 
      NSString *sqlitePath = [[NSBundle mainBundle] 
            pathForResource:[stringParts objectAtIndex:0] ofType:@"sqlite"]; 
      NSError *anyError = nil; 
      BOOL success = [[NSFileManager defaultManager] 
          copyItemAtPath:sqlitePath toPath:[url path] error:&anyError]; 
      if(!success) 
      { 
       Error(@"Unable to copy sqlite file: %@", anyError); 
      } 
     } 
+0

Eike - 請在我的原文中看到我的評論,顯然兩者之間存在不一致數據模型感謝您發佈代碼;我不太瞭解Objective-C,但我掌握了它的要點,我處理事情的方式不需要複製程序ammatically。再次感謝。 – Dogus 2014-11-23 05:21:47

相關問題