#目次
CocoaPodsでインストールできるオリジナルライブラリを作成する(1)
CocoaPodsでインストールできるオリジナルライブラリを作成する(2)
CocoaPodsでインストールできるオリジナルライブラリを作成する(3)
CocoaPodsでインストールできるオリジナルライブラリを作成する(4)
注意
この話を書く上の例として、
自作ライブラリの名前として"NeroBlu"
という名前をつけていますこれは自分の屋号から取ってきた名前なので、ただの「サンプル名」としてご認識ください
名前は各自でご自由につけなおしてくださいね
#まえがき
長く書いてきましたが、そろそろ息切れ・・・
自作のクラスがすべて自製でまかなえれば
そんな素敵なことはないんですが
中には誰かの作ったクラス・ライブラリを絡ませて実現することもあるでしょう
いや、むしろ汎用的なことは優秀なライブラリを使うことで安全に生きていきたい
この回では、そんなライブラリonライブラリなことをやる方法を書きます
#他のライブラリを導入
CocoaPodsでインストールできるオリジナルライブラリを作成する(1) で作った
自作ライブラリ作成用のプロジェクトもまた Podfile
が存在しているかと思います
(自作ライブラリを使う側のプロジェクトじゃないですよ?)
そこに、swiftでJSONを扱うならお馴染みのSwiftyJSON
を入れてみます
use_frameworks!
pod 'SwiftyJSON'
pod install
して使える状態にします
さて、ライブラリには次のような実装をします
import UIKit
import SwiftyJSON
public extension String {
public func echo() {
let json = JSON.parse(self)
print(json["text"].stringValue)
}
}
なんのこっちゃなメソッド内容ですが
とりあえずこの extension は SwiftyJSON に依存するようになりました
podspecを書き換える
Pod::Spec.new do |s|
s.name = "NeroBluTemp"
s.version = "1.2.0"
s.summary = "NeroBlu iOS Core Library."
s.description = ""
s.frameworks = "Foundation", "UIKit"
s.source = { :git => "https://github.com/nakau1/NeroBlu" }
s.source_files = "NeroBlu/*"
s.dependency 'SwiftyJSON'
end
(※ここではバージョンも書き換えてますが、これは別に気にしなくていいです)
前回から比べて
s.dependency
というものを足しました
これで、このライブラリは SwiftyJSON
に依存しますよ、と示すことができます
ちなみに、さらに依存するライブラリを増やす場合は
s.dependency 'SwiftyJSON'
s.dependency 'Alamofire'
s.dependency 'SDWebImage'
みたいな感じで増やしていくようです
ここまでを git push
します
実行してみる
自作ライブラリを使う側で pod install
を実行してみてください
-> Installing NeroBluTemp (1.2.0)
-> Installing SwiftyJSON (2.3.2)
NeroBluTemp
のインストールと同時に、SwiftyJSON
のインストールも行われました
使う側の Podfile
に SwiftyJSON
のことは何も書かなくても
ライブラリ側が「SwiftyJSON
を使うからよろしくね」って感じで勝手に入れてくれるわけですね
さて、インストールが終わったら
次のように実装してみます
import UIKit
import NeroBluTemp
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
"{\"text\":\"Hello\"}".echo()
}
}
echo()
メソッドは、ライブラリ側で、 SwiftyJSON
の仕組みを使って
JSON文字列からtext
キーを抜き取ってコンソール出力するという実装に差し替えました
使う側は SwiftyJSON
のことは何も気にせずとも
Hello
と出力されたかと思います