Posted at
Quad incDay 18

iOSアプリ開発でのリソース管理

More than 1 year has passed since last update.

最近、Swiftを触り始めたのですが、画像と文字列の管理がわかりにくかったのでまとめておきます。

基礎的なことだと思いますが、同じような人の助けになれば。

試したバージョンは下記です。


  • Xcode 9.2

  • Swift 4

  • R.swift 4.0.0


R.swiftのインストール

リソースへのアクセスに R.swift というライブラリを使います。

ライブラリの説明とインストール方法は以下を参照してください。

https://github.com/mac-cain13/R.swift#installation


文字列リソースの管理


リソースファイルの作成

Xcodeの文字列リソースファイルを利用します。

ファイルの作成(Cmd+N)で開くダイアログから Strings File を選択します。

スクリーンショット 2017-12-18 17.48.52.png

名前(ここでは settings.strings とします)をつけて保存すると、空のファイルが作成されるので、"KEY" = "VALUE"; の形式で記述します。

文末にセミコロンが必要です。


settings.strings

"welcome" = "こんにちは!";

"bye" = "さようなら"


アクセス方法

下記のように取得可能です。

R.string.[ファイル名].[KEY]()


文字列の所得

let welcome = R.string.settings.welcome() // こんにちは!



画像リソースの管理


リソースの登録

アセットカタログに画像をドラッグして登録します。

スクリーンショット 2017-12-18 21.03.03.png

アセットを登録したら、一度プロジェクトをビルドします。

すると R.generated.swift に登録した画像が追加されます。


R.generated.swift

  struct image {

/// Image `sick_kebyou_man`.
static let sick_kebyou_man = Rswift.ImageResource(bundle: R.hostingBundle, name: "sick_kebyou_man")


アクセス方法

あとは以下のようにして取得可能です。

R.image.[リソース名]


画像にアクセス

let image1 = R.image.sick_kebyou_man()


スクリーンショット 2017-12-18 21.08.29.png

補完されるので、画像名を間違える心配もありません。


namespace付きでアクセス

画像はグルーピングして管理することもできます。

下図のようにアセットカタログにフォルダーを追加して Provides Namespace をチェックしておきます。

スクリーンショット_2017-12-18_21_16_10.jpg

すると、フォルダー配下の画像に フォルダー名.リソース名 でアクセス可能となります。


namespace付きで画像にアクセス

let image2 = R.image.hogehoge.sick_byouketsu_man()