Swiftプログラマー向けの開発サポートキット
以下のことが行えます。
- JSONのデータモデルの自動生成
UIColor
/NSColor
のプロパティにアプリ用の定義を追加したExtensionの自動生成- Imageアセットから
UIImage
/NSImage
の名前空間にアセット名に対応したenum
の定義を追加したExtensionの自動生成 - ProjectディレクトリからStoryboardで定義されたView Controllerの生成を行うExtensionの自動生成
- Projectディレクトリの
*.strings
ファイルからローカライズ文字列のenum
を定義したExtensionの自動生成
Swift 3.0.1
git clone https://github.com/nhamada/DevHelperToolkit.git
swift build
DevHelperToolkit json [-o output_directory] input_file
input_file
で指定されたJSONファイルに対応するデータモデルのswiftファイルをoutput_directory
に指定されたディレクトリに出力します。
output_directory
が未指定の場合は、カレントディレクトリに作成します。
以下のようなJSONファイル(./Resources/test_userdata.json
)に対して、データモデルを作成するとします。
{
"user_data": {
"id": 1,
"name": "Test User",
"follow_ids": [
10, 15, 20
],
"follower_ids": [
2, 3, 4, 5
],
}
}
このファイルに対し、以下のコマンドを実行します。
DevHelperToolkit json ./Resources/test_userdata.json
このJSONファイルから、以下のファイルが作成されます。
JSONDecodable.swift
- JSON Objectから読み込みを行うためのプロトコルを定義したファイル
TestUserdata.swift
- JSONのトップオブジェクトに対応したデータモデル
UserData.swift
- JSONの
"user_data"
で表されるオブジェクトのデータモデル
- JSONの
上記のファイルをプロジェクトに追加後、以下のようなコードを実行することで、データモデルとしてJSONを読み込めます。
let url = URL(fileURLWithPath: "./Resources/test_userdata.json")
let data = Data(contentsOf: url)
guard let dic = try? JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] else {
abort()
}
let testUserData = TestUserdata.decode(dic)
現状、null
のデータがある場合には、データモデルの生成が行えません。
null
は、無視して、データモデルを生成します。
DevHelperToolkit color [-o output_directory] [-p {ios, osx}] input_file
input_file
で指定されたJSONファイル、または、CSVファイルに対応するUIColor
/NSColor
のExtensionのswiftファイルをoutput_directory
に指定されたディレクトリに出力します。
output_directory
が未指定の場合は、カレントディレクトリに作成します。
-p ios
で、iOS用 (=UIColor
)のExtensionを作成します。
-p osx
で、macOS用 (=NSColor
)のExtensionを作成します。
-p
オプションが未指定の場合は、iOS用にExtensionを作成します。
以下のようなJSONファイル(./Resources/test_color.json
)に対して、Extensionを作成するとします。
{
"theme_white": "000000",
"theme_black": "ffffff",
"theme_clear": "00000000",
"theme_gray": 180,
"theme_black_over": 300,
"web-safe-1": "FF6699",
"theme_gray2": 0.8
}
このファイルに対し、以下のコマンドを実行します。
DevHelperToolkit color ./Resources/test_color.json
コマンド実行後、カレントディレクトリにUIColor+Extension.swift
というファイルが作成されます。
このファイルをプロジェクトに追加すると、UIColor.###
でJSONファイルで指定した色を取得できます。
以下のようなCSVファイル(./Resources/test_color.csv
)に対して、Extensionを作成するとします。
theme_white,000000
theme_black,ffffff
theme_clear,00000000
theme_gray,180
theme_black_over,300
web-safe-1,FF6699
theme_gray2,0.8
このファイルに対し、以下のコマンドを実行します。
DevHelperToolkit color ./Resources/test_color.csv
コマンド実行後、カレントディレクトリにUIColor+Extension.swift
というファイルが作成されます。
このファイルをプロジェクトに追加すると、UIColor.###
でJSONファイルで指定した色を取得できます。
- 文字列で指定する場合
- 16進数の文字列でRGB、もしくは、RGBAの順番で指定してください。
- 数値で指定する場合
- 数値で指定する場合は、グレースケールとなります。 したがって、100を指定した場合は、R=100, G=100, B=100の色を指定した場合と同じになります。
色の名前の指定でチェックを行っていないため、white
などの定義済みの名前を指定するとビルド時にエラーになります。
DevHelperToolkit image [-o output_directory] [-p {ios, osx}] input_asset_directory
input_asset_directory
で指定されたアセットのディレクトリに対応するUIImage
/NSImage
のExtensionのswiftファイルをoutput_directory
に指定されたディレクトリに出力します。
output_directory
が未指定の場合は、カレントディレクトリに作成します。
-p ios
で、iOS用 (=UIImage
)のExtensionを作成します。
-p osx
で、macOS用 (=NSImage
)のExtensionを作成します。
-p
オプションが未指定の場合は、iOS用にExtensionを作成します。
以下のような構成のアセットに対して、Extensionを作成するとします。
+ Assets.xcassets
+- AppIcon.appiconset
+- Monster.imageset
+- Player.imageset
+- misc
+- Projectile.imageset
このアセットに対し、以下のコマンドを実行します。
DevHelperToolkit image Assets.xcassets
コマンド実行後、カレントディレクトリにUIImage+Extension.swift
というファイルが作成されます。
このファイルをプロジェクトに追加すると、UIImage.asset.###.image
でアセットとして定義されている画像のUIImage
を取得できます。
DevHelperToolkit storyboard [-o output_directory] [-p {ios, osx}] project_directory
project_directory
で指定された各Storyboardがあるディレクトリを指定します。
指定されたディレクトリ内のStoryboardに対応するUIStoryboard
/NSStoryboard
のExtensionのswiftファイルをoutput_directory
に指定されたディレクトリに出力します。
output_directory
が未指定の場合は、カレントディレクトリに作成します。
-p ios
で、iOS用 (=UIImage
)のExtensionを作成します。
-p osx
で、macOS用 (=NSImage
)のExtensionを作成します。
-p
オプションが未指定の場合は、iOS用にExtensionを作成します。
以下のような構成のプロジェクトディレクトリに対して、Extensionを作成するとします。
/path/to/project
+ SampleProject
+- Base.lproj
+- Main.storyboard
+- Settings.storyboard
...
このプロジェクトディレクトリに対し、以下のコマンドを実行します。
DevHelperToolkit storyboard /path/to/project/SampleProject
コマンド実行後、カレントディレクトリにUIStoryboard+Extension.swift
というファイルが作成されます。
Main.storyboard
内で定義されたView Controllerを取得するときは、UIStoryboard.Main.###.viewController
を使用します。
Settings.storyboard
内で定義されたView Controllerを取得するときは、UIStoryboard.Settings.###.viewController
を使用します。
Storyboard
DevHelperToolkit strings [-o output_directory] project_directory
project_directory
で*.strings
ファイルを含んだプロジェクトディレクトリを指定します。
指定されたディレクトリ内の*.strings
ファイルに対応するStrings
のExtensionのswiftファイル(String+Localizable.swift
)をoutput_directory
に指定されたディレクトリに出力します。
output_directory
が未指定の場合は、カレントディレクトリに作成します。
以下のような構成のプロジェクトディレクトリに対して、Extensionを作成するとします。
/path/to/project
+ SampleProject
+- Base.lproj
+- Localizable.strings
+- UIComponent.strings
+- ja.lproj
+- Localizable.strings
+- UIComponent.strings
...
このプロジェクトディレクトリに対し、以下のコマンドを実行します。
DevHelperToolkit strings /path/to/project/SampleProject
コマンド実行後、カレントディレクトリにString+Extension.swift
というファイルが作成されます。
Localizable.strings
で定義された文字列を取得する時は、String.Localizable.###.localizedString()
を使用します。
UIComponent.strings
で定義された文字列を取得する時は、String.Localizable.UIComponent.###.localizedString()
を使用します。