Mic*_* K. 84 xcode objective-c ios cocoapods swift
当Apple介绍他们的新编程语言Swift时,我想知道如何将它与可通过CocoaPods提供的现有Objective-C库集成?
Kin*_*ard 78
Cocoapods 0.36及以上版本引入了use_frameworks!一条指令,暗示在Swift中导入Objective-C pod不需要桥接头.
请在下面找到使用MBProgressHUD和Alamofire的完整示例:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
use_frameworks!
pod 'Alamofire', '>= 1.2.2' # Swift pod
pod 'MBProgressHUD', '>= 0.9.1' # Objective-C pod
Run Code Online (Sandbox Code Playgroud)
从桥接头中删除#imports,如果不需要,甚至删除桥接头文件.如果选择后一种可能性,请不要忘记删除Xcode项目配置中的路径(到此已删除的桥接头文件).
添加import MBProgressHUD和/或import Alamofire在每个需要这些类的Swift文件的顶部.
你现在正在使用真正的框架,所以你的枚举已经移动了!你可能有一行Swift这样的桥接头像这样:
progressHUD.mode = MBProgressHUDModeIndeterminate
Run Code Online (Sandbox Code Playgroud)
现在必须成为这样:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Run Code Online (Sandbox Code Playgroud)
这并不是什么大不了的事,但是如果你使用了大量的Objective-C枚举,一堆错误可能会让你误入歧途,说你遇到的问题比你做的更大.
(这个答案的来源)
供您参考:我猜(您必须自己测试以确定)use_frameworks!Podfile中的指令仅与面向iOS> = 8的Xcode项目兼容.
Mic*_* K. 72
似乎该过程类似于使用Swift与Cocoa和Objective-C文档的混合和匹配部分中描述的过程.
pod install.Example-Bridging-Header.h并将其添加到项目中.Objective-C Bridging Header为您的目标设置:
现在,您可以在Swift文件中使用库,在这种情况下,使用MKUnits:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Run Code Online (Sandbox Code Playgroud)
更多信息:将Cocoapods与Swift项目集成
Isu*_*uru 16
更新:CocoaPods 0.36稳定版已经发布.它正式支持Swift.
CocoaPods现在支持Swift最新的0.36版本.它仍然处于测试阶段,但确实有效.
首先,您需要在终端中运行CocoaPods beta(目前为beta 2).
sudo gem install cocoapods --pre
Run Code Online (Sandbox Code Playgroud)
这就是它.您可以像平常一样添加Swift库.
但是如果你想通过CocoaPods将一个用Objective-C编写的库添加到Swift项目中,那就有了一个问题.您需要将该行添加use_frameworks!到Podfile中.这是一个例子.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39432 次 |
| 最近记录: |