2016年3月29日火曜日

アプリ名のローカライズ

日本語のアプリ名の付け方。

1 XcodeのPROJECT/Info/LocalizationにJapaneseを追加

Storyboardなんかのローカリゼーションファイルを作るというダイアログが出るので、作ってやる。

2 InfoPlist.stringsというファイルを作る

 Supporting Filesの中に新たなInfoPlist.stringsというファイルを作る。(ファイルの種類はiOS/ResourceにあるStrings File)
右側のインスペクタのLocalizeボタンを押して、種類でJapaneseを選ぶ。

InfoPlist.stringsの中に
CFBundleDisplayName = "(日本語アプリ名)";
とやれば完成。
実機でコンパイルすればアプリ名が設定した日本語名になってるよ。

2016年3月25日金曜日

Xcode7.3、Swift2.2の変更点

iOS9.4、OSX 10.11.4などのリリースにより、Xcodeが7.3、Swiftが2.2になり、仕様変更があった。プロジェクトを開いたら、いっぱいWarningが出たよ。
まあほとんど自動的に修正してくれるようだが。
今はまだ非推奨(deprecated)の段階なので、そのままでもコンパイルしてくれる。

まずソフトウェアアップデートで表示された変更点を和訳。

Xcode 7.3の変更点


  • XcodeのiOSとOS Xのplaygroundは、対話的で、ユーザー生成のイベント(例えばボタン・クリックとiOSジェスチャー)に反応します。
  • コード補完機能は、より知的な提案(APIの範囲内で単語の最初の文字に基づいたオプションを含む)を提供します。
  • デバイスウィンドウは、一つのiPhoneに対して複数のApple Watchデバイスの間での切り替えをサポートします。
  • SwiftとObjective-C両方の記述を評価するとき、デバッガーは必要なフレームワークを自動的にインポートします。
  • ビューデバッギングは、さらなるインスペクター情報、コンテキストメニューとアシスタントエディター・オプションを追加します。
  • 静的アナライザーは、nullabilityとObjective-Cの属性に関連した、より潜在的問題を確認します。

Swift2.2の変更点


  • Swift.orgからダウンロードされるSwift toolchainsは、プリファレンスのupdated Componentsタブから簡単に選択できます。
  • 新しく#file、#line、#columnと#functionの記述を追加。
  • スライスタイプの新しいremoveFirst()とremoveLast()メソッドを含む、標準ライブラリの改善。
  • 条件付きビルドのオプションは、現在のSwiftバージョンに基づく同じファイルの範囲内で、はっきりしたコードブロックを編集することができます。
  • メソッドのObjective-C selectorを参照する、新しい#selector記述。
  • 失敗可能なクラス・イニシャライザは、スーパークラスのイニシャライザを呼ぶ前に、「nil」を返すことができます。
  • 改善されたコンパイル時診断メッセージ。
  • 例えば++、--文と、C言語スタイルのループ文を、将来リリースされるSwift 3に備えて非推奨化。
よくわかんないのもあるけど、まあいいや。
次に、自分のプロジェクトで引っかかった点のまとめ。

selectorの記述で、Objective-C式が非推奨になる

finishTimer = NSTimer.scheduledTimerWithTimeInterval(rnd,
                target: self,
                selector: "finish",
                userInfo: nil,
                repeats: false)

新(Flatwoodsはコードが書かれたクラス名)
finishTimer = NSTimer.scheduledTimerWithTimeInterval(rnd,
                target: self,
                selector: #selector(Flatwoods.finish),
                userInfo: nil,
                repeats: false)


ちゃんとクラス名も入れろってことか。

加算、減算演算子の++、--が次期Swift3から使用不可に


actionCounter++



actionCounter += 1

for文も変わった


for (var i = 0; i < 10; i++) {
    print(i)
}

for i in 0..<10 {
    print(i)
}

旧のi++が将来的に使えなくなるとしてWarningが出るのは当然として、C言語形式の書き方も将来的に廃止になるからとしてfor in形式に書き換えさせられる。