iOS 8 beta – 今天扩展不能识别embedded式框架

我正在写一个应用程序,它也有一个今天扩展(或小工具)。 苹果推荐的在扩展之间共享代码并包含应用程序的方法是将共享代码放入应用程序和扩展可以使用的embedded式框架中。 所以据我了解,我应该编写共享代码,并将共享代码作为目标框架,然后让应用程序和扩展都将框架声明为依赖项。 然而,在实践中,我发现,虽然应用程序认识到框架很好,但今天扩展没有。

更具体地说:我将一个简单的表格视图放在我的今天的扩展名(我将称之为“小工具”)和作为我的应用程序(我将称为“应用程序”)中的一个选项卡,然后一个框架(我将称之为“框架”)与共享代码。 Widget附带一个包含表格视图的TodayViewController。 这个表格视图有一个自定义的单元格,我打电话给CalendarCell。 所以相关的共享类/文件是:

  • TodayViewController.h /米
  • CalendarCell.xib
  • CalendarCell.h /米

然后,当然,我有我的Widget故事板和应用程序故事板,这是不共享的。

所以,在我的App目标构build阶段,我将Framework作为目标依赖项,同时也将Widget作为目标依赖项(创build目标时就是这样的,删除它似乎没有任何帮助)。 同样,在Widget目标构build阶段,我将Framework作为目标依赖项。 框架将TodayViewController.m和CalendarCell.m列为编译源,将CalendarCell.xib列为束资源。

所以这里出了什么问题:如果Widget没有列出CalendarCell.m,TodayViewController.m和CalendarCell.xib作为编译源和捆绑资源,那么这个Widget不起作用。 具体来说,如果没有列出TodayViewController.m,那么应用程序甚至无法在模拟器中运行(我得到了这个人得到的同样的错误)。 如果TodayViewController.m被列出,但其他任何源文件/资源​​都没有,那么我会得到一个没有内容的扩展(和其他人一样 )。 请注意,应用程序确实认可框架就好,不必将这些文件列为编译源或捆绑资源 – 这只是失败的Widget。

如果有人有这个想法,我会感激。 一个Xcode 6 / iOS 8的错误? 或者我做错了什么?

其实你正在添加目标依赖的框架。 那是错的 目标依赖性是我们应该指定其他目标的地方,这些目标应该被编译来运行我们的主要目标。

将您的框架添加到“ 链接二进制库”中 ,如果需要,在构build设置中设置框架searchpath

我有类似的问题。 尝试在“今日”视图中为所有项目添加约束条件。 这个对我有用。