2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CocoaPodsでインストールできるオリジナルライブラリを作成する(4)

Last updated at Posted at 2016-07-01

#目次

CocoaPodsでインストールできるオリジナルライブラリを作成する(1)
CocoaPodsでインストールできるオリジナルライブラリを作成する(2)
CocoaPodsでインストールできるオリジナルライブラリを作成する(3)
CocoaPodsでインストールできるオリジナルライブラリを作成する(4)

注意

この話を書く上の例として、
自作ライブラリの名前として "NeroBlu" という名前をつけています

これは自分の屋号から取ってきた名前なので、ただの「サンプル名」としてご認識ください
名前は各自でご自由につけなおしてくださいね

#まえがき

長く書いてきましたが、そろそろ息切れ・・・

自作のクラスがすべて自製でまかなえれば
そんな素敵なことはないんですが
中には誰かの作ったクラス・ライブラリを絡ませて実現することもあるでしょう
いや、むしろ汎用的なことは優秀なライブラリを使うことで安全に生きていきたい

この回では、そんなライブラリonライブラリなことをやる方法を書きます

#他のライブラリを導入

CocoaPodsでインストールできるオリジナルライブラリを作成する(1) で作った
自作ライブラリ作成用のプロジェクトもまた Podfile が存在しているかと思います
(自作ライブラリを使う側のプロジェクトじゃないですよ?)

そこに、swiftでJSONを扱うならお馴染みのSwiftyJSONを入れてみます

use_frameworks!

pod 'SwiftyJSON'

pod installして使える状態にします

さて、ライブラリには次のような実装をします

String+Echo.swift
import UIKit
import SwiftyJSON

public extension String {
    
    public func echo() {
        
        let json = JSON.parse(self)
        print(json["text"].stringValue)
    }
}

なんのこっちゃなメソッド内容ですが
とりあえずこの extension は SwiftyJSON に依存するようになりました

podspecを書き換える

NeroBlu.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のインストールも行われました
使う側の PodfileSwiftyJSON のことは何も書かなくても
ライブラリ側が「SwiftyJSONを使うからよろしくね」って感じで勝手に入れてくれるわけですね

さて、インストールが終わったら
次のように実装してみます

ViewController.swift
import UIKit
import NeroBluTemp

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        "{\"text\":\"Hello\"}".echo()
    }
}

echo() メソッドは、ライブラリ側で、 SwiftyJSON の仕組みを使って
JSON文字列からtextキーを抜き取ってコンソール出力するという実装に差し替えました

使う側は SwiftyJSON のことは何も気にせずとも

Hello

と出力されたかと思います

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?