Ios 多个目标共享文件

Ios 多个目标共享文件,ios,objective-c,ios8-today-widget,today-extension,Ios,Objective C,Ios8 Today Widget,Today Extension,我在2012年创建了一个iOS应用程序(单视图应用程序)。现在,我想在解决方案中添加“Todays Extension”目标。我把今天的延期作为一个单独的目标。我面临的问题是,我无法使用我在原始项目中添加的任何文件 即使我导入了头,我仍然无法实例化属于我的原始项目的类。如何在两个目标之间共享类 主要问题: 主要问题是我在默认目标中创建了一个SQLITE数据库。数据库存储在主应用程序的Documents目录中。问题是Todays扩展无法访问该目录,即使我将路径保存在NSUserDefaults中,

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

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

主要问题:


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

您必须签入inspector文件,以便与您的Today扩展目标共享该文件


选择您的.m文件,在右边的列(检查器)中,您可以检查文件的“目标成员身份”。只需将其添加到扩展中即可

(上图中,Weather Live-Suisse是today分机和其他target常规应用程序)。

您必须在inspector中签入文件,以便与today分机目标共享


选择您的.m文件,在右边的列(检查器)中,您可以检查文件的“目标成员身份”。只需将其添加到扩展中即可
(上图中,Weather Live-Suisse是today的一个扩展,也是其他的目标常规应用程序)。

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

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

这里是苹果的文档链接

它描述了你需要的一切。

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

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

这里是苹果的文档链接


这说明了您所需要的一切。

根据Zubair的以下链接:

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

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

严格来说,不必使用通用框架,但它可以避免代码重复。

根据Zubair的以下链接:

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

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

严格来说,不必使用通用框架,但它可以避免代码重复。

导入标题时是否有任何错误?什么特定的错误消息/问题阻止您从原始项目实例化类?是否存在与导入标题相关的错误?什么特定的错误消息/问题阻止您从原始项目实例化类?谢谢!我试试看。我将一个类的目标成员身份更改为具有Todays扩展名,但它调用了其他几个类,因此看起来我必须手动将许多类添加到Todays扩展名目标中。是的,有时这非常重要,但我不知道向扩展名添加文件的其他方法。另一个问题是数据库存储在文档中无法从Todays扩展目标访问的一个目标的目录。这是另一个问题。谢谢!我试试看。我将一个类的目标成员身份更改为具有Todays扩展名,但它调用了其他几个类,因此看起来我必须手动将许多类添加到Todays扩展名目标中。是的,有时这非常重要,但我不知道向扩展名添加文件的其他方法。另一个问题是数据库存储在文档中一个目标的目录无法从今天的扩展目标访问。这是另一个问题嵌入式框架不是必需的,他没有谈论数据共享而是代码文件共享。@David'mArm'Ansermot要共享代码,你必须使用嵌入式框架,这就是我说的不需要嵌入式框架,他不谈论数据共享,只谈论代码文件共享。@David'mArm'Ansermo要共享代码,必须使用嵌入式框架,这就是我说的