投稿

9月, 2015の投稿を表示しています

Swiftブログの要点まとめ 2015

イメージ
appleの公式Swiftブログ(英文)
の各記事の要点を日本語でまとめます。
英語のトレーニングを兼ねて...


Swift is Open Source
2015年12月3日
Swiftはオープンソースになりました。
関連項目は
Swift.org Swiftに関わる人のためのサイトgithub.com/apple ソースコードの置き場Swiftパッケージマネージャーというコードを共有したりビルドするためのツールSwiftネイティブコアライブラリというスタンダードライブラリの上のレベルのものLinuxだけでなくAppleのプラットフォームにも対応

Literals in Playgrounds
2015年10月7日
Playgroundでファイル、色、画像の扱いが可能になりました。


Swift 2 Apps in the App Store
2015年9月21日
Swift 2で作成したアプリが提出可能になりました。
Xcode 7はSwift 2を含みます。Swift 1.2から変更するにはEdit > Convert > To Latest Swift Syntaxを使用して下さい。
OS X El CapitanでXcodeを使うならXcode7を要求します。Xcode 6を使い続けるならOS X Yosemiteのままにして下さい。Xcode 7とYosemiteの組み合わせはOK。


Swift-er SDK
2015年8月12日
Xcode 6.3でObjective-Cに新しい機能のnullability annotationsが付きました。SwiftのOptionalに相当します。


Strings in Swift 2
2015年7月23日
Swift 2ではStringの仕様が変わります。
今までStringはCharacterのコレクションとして扱ってきましたがSwift 2ではそうではありません。Swift 2ではStringはcharactersというプロパティを持ち、そのcharactersプロパティがコレクション(文字の集まり)の性質を請け負います。
変更の理由は、StringはArrayやSet,Dictionaryといったコレクションとは極めて異なる振る舞いをしなければならないことです。このStringの性質はもとからなのですが、S…

Xcode7の時点でCertificate(証明書)とProvisioning Profileの作成は(ほぼ?)全自動に

イメージ
Certificate(証明書)とProvisioning Profileを全部削除した状態で、Xcode7でデバッグ(手元デバイスでの動作チェック)とストアへの申請を行い、どの程度自動作成機能が使える状態になっているか確認する。頻繁にチェックしているわけではないので実はXcode6のときにすでに出来ていたと言われる可能性もあるが、とりあえずやってみる。

1、developer.apple.comのCertificates,Identifiers & ProfilesページでCertificateとProvisioning Profileを全部削除する。App IDとDeviceは使用するものが設定してある。App IDはそれぞれのアプリ個別のもののみがある。


2、Xcode7の環境設定の中のAccountsのView Details...ボタンをクリック。出てきた一覧表に上下2つのエリアがありますが、上のSigning IdentitiesはCertificateに対応しているようです。Provisioning Profileがあれば(ローカル環境に残ったもの?)削除する。Signing IdentitiesのiOS DevelopmentとiOS DistributionにはCreateボタンがあるが作成はせずにスルー。



3、Xcode7でプロジェクトを開く。Bundle Identifierは設定してある。当然、No provisioning profiles foundの黄色警告が出る(ターゲット設定のGeneralタブのIdentitiy)。修正するためのFix Issueボタンも表示される。この時点でシミュレータでは実行可能。

実デバイスで実行しようとするとNo Provisioning profiles foundの赤色アラームが発生。実デバイスでの実行は不可。


4、ここでお待ちかねのターゲット設定のGeneralタブのIdentitiyのFix Issueボタンを押す(裏で何をやっているかわからないから好きではないという意見もあるかも)。するとiOS DevelopmentのCertificateが作成され(Createボタンが消える)、App IDにもXcode iOS Wildcard App IDというものが作成された。そしてそれらを…

iOS9対応でやったこと

[NSLocale preferredLanguages]
[NSLocale preferredLanguages]で返ってくる言語設定が
iOS8まで ja
iOS9から ja-US
のようになったので対応。
isEqualToString:@"ja"
から
hasPrefix:@"ja"
へ変更すればOKと思いましたが
ジャマイカ...
が脳裏をよぎり
isEqualToString:@"ja"とhasPrefix:@"ja-"のORにしておきました。


NSManagedObjectContext
[[NSManagedObjectContext alloc] init]が9.0でdeprecatedになったので
[[NSManagedObjectContext alloc] initWithConcurrencyType:]
に変更しようと思ったがConcurrencyTypeの設定が難しすぎて一旦保留。


Requires full screen
iPadアプリで「全方向対応でない場合はRequires full screenをONにするように」というワーニングが出たのでONにする(そのアプリは縦のみ対応)。
このパラメータはSlide OverやSplit Viewで画面の一部の表示をされたくない時にもONにするものらしい。

(追記 : 以下のバグはXcode7.1.1では修正されていました)
ちなみにiOS9.0 Xcode7.0の段階でSlide OverやSplit Viewを有効にするとなぞのバグ(?)があって、
フルスクリーン状態で(Slide OverやSplit View状態ではない)デバイスを回転させて、UIDeviceOrientationDidChangeNotificationを受けた時に
self.view.bounds.size.width
self.view.bounds.size.height
が変更前の状態で取得されてしまって使えなくなるという現象があった。その値を元に全体の要素を配置しているので、縦にすると横の配置になり、横にすると縦の配置になるという現象。
[[UIApplication sharedApplication] statusBarO…