很多Github的庫經過很多年的發展,源碼都是OC寫的,,所以,用Swift調用OC的庫就是開發中難免遇到的的一個問題,本文以AFNetworking為例,講解如何跨語言調用。
第一步
創建一個空的工程?
注意,語言選擇Swift?
第二步,創建bridging-header
這個文件的作用,就是把OC的接口暴露給Swift。有兩種方式?
方式一?
創建一個OC文件,然后點擊確定?
?
彈出是否要創建Bridging-Header,點擊確定,這樣會生成三個文件,其中的一個就是我們要用的SwiftUseAFNetworkingDemo-Bridging-Header.h?
方式二,創建任意頭文件,然后在buildSetting里設置為bridging-header?
創建一個頭文件,命名為bridge(任意)?
?
在build setting里設置?
第三步,安裝庫(要提前安裝Cocoa Pod)
然后,我的習慣是用命令行來修改這個文件?
到工程的目錄?
3.1初始化pod
pod init
- 1
3.2 修改PodFile
vim Podfile
- 1
然后修改成如圖? ? 3.3安裝庫? 這里可能等的時間有點長,等著就是了
pod install
3.4 重新打開工程,注意,要打開Pod的工程?
第四步,在頭文件中import
第五步,測試
完整代碼
//
// ViewController.swift
// SwiftUseAFNetworkingDemo
// // Created by huangwenchen on 15/4/8. // Copyright (c) 2015年 huangwenchen. All rights reserved. // import UIKit class ViewController: UIViewController { lazy var manager:AFURLSessionManager = { var configuration = NSURLSessionConfiguration.defaultSessionConfiguration() var deaultmanager = AFURLSessionManager(sessionConfiguration: configuration); return deaultmanager; }() override func viewDidLoad() { super.viewDidLoad() var url = NSURL(string: "http://jsonplaceholder.typicode.com/posts") var request = NSURLRequest(URL: url!) var dataTask = manager.dataTaskWithRequest(request, completionHandler: { (response:NSURLResponse!, data:AnyObject!, error:NSError!) -> Void in NSLog("%@",data.description) }) dataTask.resume() } }
測試,庫使用成功。