iOS 8扩展依赖项问题.将一个项目文件导入扩展视图控制器

Mat*_*der 6 ios cocoapods ios8 ios8-share-extension ios8-extension

我正在开发iOS 8扩展.我阅读了很多手册,所有这些手册都只显示了为您的应用添加扩展程序的简单程度,似乎已经足够了.

但这里有许多陷阱:

  1. 添加扩展后,您需要导入一些类来查看添加新扩展目标时创建的控制器.这里最重要的是你需要添加所有这些,如果你有大项目,这不是一个简单的任务.解决方案可以选择扩展目标,然后在Build Phases - > Compile Sources按加号按钮,并使用热键CMD + A将所有.m文件添加到目标.

  2. 添加所有文件后,您可以看到某些方法无法正常工作,您可以看到此错误: 'sharedApplication' is unavailable: not available on iOS (App Extension)因此解决方案可以是一个检查ifndef Extension然后我们可以调用sharedApplication代码的宏.

  3. #import <Foundation/Foundation.h>VS #import <UIKit/UIKit.h>.所以我还没有弄清楚这个问题,但当我替换它时Foundation,UIKit它适用于我,所有相关的问题都消失了.

  4. 的CocoaPods.我们所有人都在使用CocoaPods,所以如果您的扩展需要使用项目代码的某些部分,并且该代码使用CocoaPods库,那么您需要添加link_with 'ProjectTarged', 'ExtensionTarget'到Pod文件并pod install再次使用新的扩展目标绑定您的库.

所以这是我面临的一个要点.也许有人可以建议如何解决这个问题,因为我说我只需要将一个所需文件导入扩展视图控制器.导入的文件包含一些库AFNetworking,RestKit以及主项目中的其他嵌套类.我需要这个类来调用几个方法,将数据从扩展名传递到我的后端服务器.所以一个文件,但很多问题.

小智 5

您可以在Podfile中使用它来防止"仅需要App-Extension-Safe API".只需将其放在Podfile的末尾即可.

post_install do |installer_representation|
installer_representation.project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
        end
    end
end
Run Code Online (Sandbox Code Playgroud)