CocoaPodsに変わるライブラリ管理ツール?Carthageを使ってみた
使い方は簡単
1. インストール
2. Cartfile作成
3. carthage update実行
4. 各々お好きに
1. インストール
Releases · Carthage/Carthage · GitHub
githubからpkgをダウンロードして実行するだけ!
2. Cartfile作成
Quickをインストールしたい場合はこれだけ!
github "Quick/Quick" == 0.2.0 github "Quick/Nimble"
3. carthage update実行
あとは、carthageがgit cloneやらxcodebuildを実行してくれて、.frameworkファイルを生成してくれます。
4. 各々お好きに
Quickを実行する場合は、xcodeprojをテストターゲットに追加して、Carthage/Buildの.frameworkをリンクさせれば良いです。
Swiftのクラスをテストから参照する
Tests.swift内で、プロジェクトのクラスを参照する方法。
自分の作成したプロジェクトがMyProjectとします。
Tests.swift内で`import MyProject`として、importします。
ここで、注意なのはMyProjectで作成したclassはMyProject内からしか参照出来ない状態です。
publicを指定していれば、参照出来るようになります。
import Foundation public class Model { public init() { } }
これで、以下のようにテスト内で参照できます。
Tests.swift
import XCTest import MyProject class ModelTests: XCTestCase { let testObject = Model() }
iOSライブラリ管理ツールのCarthageが0.4にアップデート
Release 0.4: Carthage Unpinned · Carthage/Carthage · GitHub
大きな変更としては、3つ!
1. ディレクトリ構造
以前は
Cartfile Cartfile.lock Carthage.build Carthage.checkout
だったのが
Cartfile Cartfile.resolved Carthage/ Build/ Checkouts/
になりました。
2. Cartfileで任意のブランチやタグが指定可能に
こんな感じ
# Require version 2.3.1 or later github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1 # Require version 1.x github "Mantle/Mantle" ~> 1.0 # (1.0 or later, but less than 2.0) # Require exactly version 0.4.1 github "jspahrsummers/libextobjc" == 0.4.1 # Use the latest version github "jspahrsummers/xcconfigs" # Use a project from GitHub Enterprise, or any arbitrary server, on the "development" branch git "https://enterprise.local/desktop/git-error-translations.git" "development"
3. Carthage生成によるApp Storeリジェクト回避
Carthageを利用したプロジェクトをそのままリリースするとリジェクトされる問題について
iOS frameworks built with Carthage cannot be submitted to the App Store · Issue #188 · Carthage/Carthage · GitHub
こちらのissueで開発者達の苦労の後が見られて楽しいです。
Add `copy-framework` by robb · Pull Request #208 · Carthage/Carthage · GitHub
方法はREADMEにて説明されています。
Carthage/README.md at a8a6bb83229892e57530ac6096e85907078bd061 · Carthage/Carthage · GitHub
- Cartfile作成
- “General” settings tab, in the “Linked Frameworks and Libraries” sectionに追加したいframeworkをCarthage/Buildフォルダからドラッグ&ドロップ
- Run Script追加する
/usr/local/bin/carthage copy-frameworks
- “Input Files”にパスを追加する
$(SRCROOT)/Carthage/Build/iOS/LlamaKit.framework $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
SwiftのCompilerバグ
optimization levelを-OFastestにすると
DataTypeRef?.toOpaque()がnilを返すためkeychainからデータを上手く読み出せない。
対策
- optimization levelを-ONoneにする
- objective-Cを使う
objective-Cを使う場合の例です。
ここでは、SSKeychainというライブラリを利用しています。
この場合loadの返す値が若干異なるので注意して下さい。
全く同じ実装にはなっていません。
様々なAPIドキュメントを確認できるDevdocs.io
DevDocs: Open-source / Offline API Documentation Browser
にアクセスすると、Ruby, Rails, Redis, HTML, CSS, Ember.js, Git...などなど様々なAPIドキュメントを検索、参照出来ます。
リポジトリはThibaut/devdocs · GitHubにて公開されてます。