target 'myProject' do source 'https://github.com/CocoaPods/Specs.git' use_frameworks! pod 'PubNub','~>4.0' pod 'Alamofire','~> 1.3' end target 'myProjectTests' do end
在我自动生成的桥接头我有PubNub的导入为:
#import <PubNub/PubNub.h>
和我的AppDelegate.swift文件:
import Cocoa @NSApplicationMain class AppDelegate: NSObject,NSApplicationDelegate { var client:PubNub? func applicationDidFinishLaunching(aNotification: NSNotification) { let config = PNConfiguration( publishKey: "Your_Pub_Key",subscribeKey: "Your_Sub_Key") client = PubNub.clientWithConfiguration(config) client?.addListener(self) client?.subscribeToChannels(["Your_Channel"],withPresence: false) client?.publish("Swift + PubNub!",toChannel: "demo",compressed: false,withCompletion: nil) } func client(client: PubNub!,didReceiveMessage message: PNMessageResult!) { println(message) } func applicationWillTerminate(aNotification: NSNotification) { // Insert code here to tear down your application } }
由于使用未申报类型PubNub的编译器错误,项目无法构建.我检查了构建设置,Swift编译器 – 代码生成部分显示它指向目标的桥接头文件(自动填充).
使用Xcode 6.4和pods版本0.38.2
解决方法
从Apple Developer Documentation直:
You can import external frameworks that have a pure Objective-C codebase,a pure Swift codebase,or a mixed-language codebase. […] You can import a framework into any Swift file within a different target using the following syntax:
import FrameworkName
固定
添加导入PubNub框架.
import UIKit import PubNub @UIApplicationMain class AppDelegate: UIResponder,UIApplicationDelegate { var window: UIWindow? var client:PubNub? // ... }
通过单一导入,PubNub被声明,在Xcode编辑器中自动完成,编译,链接,构建和运行.
一步一步的Swift框架教程
由于以下许多评论意味着桥接头总是需要,所以当使用外部框架时,使用use_frameworks的情况是错误的!指令在Podfile中,在这里找到一个纯粹的Swift解决方案.接下来是一个可以下载和体验的Xcode项目.
在iOS Developer Library中明确记录,概念中使用Swift与可可和Objective-C,“混合和匹配”一章,同一项目中的Swift和Objective-C部分引入外部框架:
The process for importing an external framework is the same whether the framework is written in a single language or contains files from both languages.
Podfile
platform :ios,'8.0' use_frameworks! target 'SO-31642385' do pod 'PubNub','~> 1.3' end
安装pod
] pod install Downloading dependencies Installing Alamofire (1.3.1) Installing CocoaLumberjack (2.0.0) Installing PubNub (4.0.4) Generating Pods project Integrating client project Please close any current Xcode sessions and use `SO-31642385.xcworkspace` for this project from now on.
导入框架
import UIKit import PubNub @UIApplicationMain class AppDelegate: UIResponder,UIApplicationDelegate { var window: UIWindow? var client:PubNub? func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { self.client = PubNub() return true } // ... }
►在GitHub查找此解决方案,并在Swift Recipes上查看更多详细信息.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。