多个目标共享文件

时间:2015-04-30 12:38:15

标签: ios objective-c ios8-today-widget today-extension

我有一个我在2012年创建的iOS应用程序(单视图应用程序)。现在,我想在解决方案中添加“今日扩展”目标。我已将Todays Extension添加为单独的目标。我面临的问题是我无法使用我在原始项目中添加的任何文件。

即使我导入标题,我仍然无法实例化属于我原始项目的类。我如何在两个目标之间共享课程。

主要问题:

主要问题是我在默认目标中创建了一个SQLITE数据库。数据库存储在主应用程序的Documents目录中。问题是Todays Extension无法访问该目录,即使我在NSUserDefaults中保存路径,它仍然无法访问它。

3 个答案:

答案 0 :(得分:0)

您必须在检查员中检查文件,以便与今日扩展程序目标共享。

enter image description here
选择.m文件,在右侧col(检查员)中,您可以检查"目标会员资格"的文件。只需将其添加到您的扩展程序。
(在上图中,Weather Live - Suisse是今天的扩展,另一个是目标规则应用程序)。

答案 1 :(得分:0)

根据Zubair的链接:

  • 创建一个应用程序组(例如group.com.yourcompany.app)并将其分配给您的应用程序和您的小部件
  • 打开文档时,要获取NSURL,请使用例如:

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

使用通用框架并不是绝对必要,但它避免了代码重复。

答案 2 :(得分:-1)

  • 您必须创建一个嵌入式框架,以在您的应用扩展程序及其包含应用之间共享代码。

  • 要启用数据共享,请使用Xcode或开发人员门户为包含应用及其包含的应用扩展程序启用应用组。

以下是Apple文档链接

Adding App group

Handling Common Scenarios in App & extentions

描述了你需要的一切。