2015-04-30 125 views
1

我有一個我在2012年創建的iOS應用程序(單一視圖應用程序)。現在,我想添加「今日擴展」目標到解決方案。我已將Todays Extension添加爲單獨的目標。我面臨的問題是我無法使用我在原始項目中添加的任何文件。多個目標共享文件

即使我導入標題,我仍然不能實例化屬於我原始項目的類。我怎樣才能在兩個目標之間分享課程。

主要問題:

的主要問題是,我創建默認目標SQLite數據庫。數據庫存儲在主應用程序的Documents目錄中。問題是,Todays Extension無法訪問該目錄,即使我將路徑保存在NSUserDefaults中,它仍然無法訪問它。

+0

是否有任何與導入標題相關的錯誤?什麼具體的錯誤信息/問題阻止你實例化原始項目中的類? –

回答

0

您必須檢查您的檢查員文件以與今日擴展目標共享。

enter image description here
選擇您的.m文件,並在右側列(檢查員)中檢查文件的「目標成員資格」。只需將其添加到您的擴展。
(在上圖中,Weather Live - Suisse是今天的擴展和其他目標regulare應用程序)。

+0

謝謝!我會嘗試。我改變了一個類的目標成員資格以擁有Todays Extension,但它調用了其他幾個類,因此看起來像我必須手動添加許多類到Todays Extension目標。 –

+0

是的,有時它很漂亮,但我不知道另一種向你的擴展添加文件的方式。 –

+0

另一個問題是數據庫存儲在一個目標的Documents目錄中,這個目錄不能從Todays擴展目標訪問。 –

-1
  • 您必須創建嵌入式框架才能在您的應用擴展程序及其包含的應用程序之間共享代碼。

  • 要啓用數據共享,使用的Xcode或開發人員門戶以使應用程序組對所述含的應用程序和其包含的應用程序擴展。

下面是蘋果的文檔鏈接

Adding App group

Handling Common Scenarios in App & extentions

是discribes你需要的一切。

+0

嵌入式框架不是必需的,他不談論數據共享,但代碼文件共享。 –

+0

@ David'mArm'Ansermot要共享代碼,您必須使用嵌入式框架,那就是我所說的 –

0

按以下祖拜爾的鏈接:

  • 創建應用程序組(例如group.com.yourcompany.app)並將其分配給您的應用程序和窗口小部件
  • 當打開文檔都,獲得NSURL它,使用例如:

    NSURL *storeURL ; 
    
    storeURL= [[[NSFileManager defaultManager] 
          containerURLForSecurityApplicationGroupIdentifier:@"group.com.yourcompany.app"] 
          URLByAppendingPathComponent:@"yourdatabase.sqlite"]; 
    

它不是必要使用一個共同的框架,但它避免代碼重複。