カテゴリー別アーカイブ: iOSアプリ開発

Swiftでクラス名を取得する方法

最近iOSアプリを開発するときに書くコードは、Swiftにほぼ移行しました。
割りとスムーズにいったので、安心しています。

外部ライブラリ以外は、Swiftで書いたアプリを一つ仕上げたのですが、これでだいぶ身についた気がします。

しかし、Objective-Cで書いてた書き方が、どう置き換えたらいいかわからないこともまだまだあります。
例えば、クラス名を取得する方法。
それほど使う場面はないのですが、最近使う場面に出くわしたので共有します。

Objective-Cだと以下のコードで、取得します。

NSStringFromClass([object class])

これに変わるコードはどれになるのかという話ですが、

NSStringFromClass(self.dynamicType)
これで、クラス名を取得できます。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Xcodeで、SourceKitService crashed〜というエラーが頻繁に出るときの対処方法。

昨日から、SourceKitService Crashed〜というエラーが頻繁に出て、Xcodeの補完機能が働かなくなったり、コードのカラーリングがなくなって真っ黒になったりととても使いにくくなってしまいました。

Swift error

ビルドは通るし、コードは問題なさそうでしたがどうすれば元に戻るのか分からず半日以上費やしてしまいました。

でも結局なんとかなったので、助かりました。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Xcode 6.1のiPhone Simulatorでキーボードの機能拡張(extension)が使えない。

実は、キーボードアプリを開発中です。
で、色々と仕上げの作業を進めながら、途中でXcode 6.1を使って作業をしていたのですがiPhoneのiOS 8.1のシミュレータでキーボードの機能拡張が使えない不具合が発生しておりました。

SafariとMapで発生するようです。

どうやら、SafariとMapアプリで発生する不具合のようです。

objective c – Keyboard Extension Not Working with Xcode 6.1 – Stack Overflow

つまり、それ以外のアプリでは問題がないということです。カレンダーアプリでは、普通に使えました。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

SwiftでMagicalRecordを使うときは、@objc(Entity名)を忘れずに。

Swiftを使ってコードを書いています。
Objective-Cで書かれたコードも、しっかりと使えるようにサポートしていて書き方こそ違えど、大体はそのままSwiftに持ち込んでも問題ないと思っています。

しかし、MagicalRecordを使ってCoreDataを触っていると存在しないエンティティにアクセスしていると実行時にエラーでアプリが落ちることがありました。

magicalpanda/MagicalRecord

正直、皆目検討が付かず3時間は悩んでいたと思うのですがふとしたことで、対策を思いつきました。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

シミュレータを使っていても、iPhone 6 Plusかどうか判別する方法

UIUserInterfaceSizeClassという現在のデバイスの向きの縦横の対応しているサイズを表現するクラスが追加されました。

これを使って、StoryboardのUIをiPhone 6 PlusやiPadとその他でも共存できるようになりました。
また、UIScreenのbounsの値もきちんと向きに合わせて表示されるように変更となりました。
以前までは、向きによって縦横を入れ替えたりしていたので、これは若干注意が必要なところです。

xcode,iOS8,iPhone – iOSのマルチデバイス対応 UITraitCollection – Qiita

[iOS 8] マルチデバイス対応の新機能「Trait Collection」 | Developers.IO

そういった変化には柔軟に対応していきたいのですが、最近iPhone 6 Plusかどうかを判定する必要があり、そういったときにこのUIUserInterfaceSizeClassとUIScreenのサイズを使って切り分けるコードを書きましたので、記事にしておきます。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

UICollectionViewのセルのサイズを変更する。

UICollectionViewを使うときにレイアウトなどは、xibやStoryboardから設定することが多いのではないでしょうか。

ぼくの使い方だとxibかStoryboardでの設定で十分でUICollectionLayoutのサブクラスを作ったりすることもほとんどありません。

しかし、最近CollectionViewを色々といじるアプリを作ることがあって、その中身で動的にセルのサイズを変更したい場面が出てきました。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

iOS8で、起動時にUILocalNotificationの通知を消さないようにする方法

iOS8で、UILocalNotificationで登録した通知からアプリを起動するたびに、毎回消えるようになりました。
以前まで大丈夫だった状況で、消えるようになっていました。
たぶんぼくの環境だけではないと思うのですが、毎回消えるので困っていました。

以前は、通知センターに通知を残していればアプリを起動するというようなプチハックにも使えて便利だったのですが、上記のように少し挙動が変わり同じように動作させるには少しコツがあります。

考え方としては、UILocalNotificationを再度登録するだけです。

でも、通知センターから起動した場合はアプリの起動している状態によって3パターンに動作が分かれますので、それぞれに対して対応する必要があります。

パターンですが、以下のようになります。

  • アプリが完全に落ちている場合。
  • アプリがバックグラウンドで動作している場合。
  • アプリが現在フォアグラウンドで使用中の場合。

このパターンそれぞれをアプリで取得するには、applicationDetegateでいくつかのコードを書く必要があります。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Xcode6でSwiftを使っていて、よくわからないところでArchitecuterのエラーが出るときに試してみてほしい。

Xcode6でSwiftを使っていて、よくわからないところでArchitecuterのエラーが出るときに試してみてほしい。

最近は、どっぷりSwiftを使っています。
まぁ、書きやすいです。

Objective-Cに慣れきっていたということもあって、まだ完全には自分のものに出来ていないのですがスラスラ書けるようにはなってきました。

しかし、結構苦労したのがベータの段階だと大きな仕様変更があったりして、エラーが出まくることが多かったのです。
毎回、変更点を調べながら直してというのを繰り返していました。

実際、それで直ればよいのですがよくわからないエラーもありました。
ぼくの場合は、UITextFieldTextDidChangeNotificationを参照するとおかしくなるという原因不明のエラーに悩まされていました。 

Apple Mach-O Linker error – Xcode 6 Beta 6 – Learning iOS, Swift

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

iOS 8のExtensionでUIApplicationが使えないけど、共通のコードを使いたい場合。

コードをExtensionと共有する方法は、色々あります。
Frameworkを使ったり、それぞれのファイルをコンパイル時に含めてしまうように設定したり、今のところ簡単な方法で出来るなら何でもいいかなと思って色々試してみています。

でも、extensionではUIApplicationを使うことができないので、その辺りを使うコードは共有しにくいのが現状です。
ぼくはこういう場合は、以下の記事に書かれているようにマクロを使って対処しています。

uiapplicationdelegate – iOS 8 Extension How To Detect Running – Stack Overflow

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

everPostで不具合が発生しています。修正中です。

everPostというiOSのEvernote検索アプリをリリースしています。
そのアプリで先日より、数名の方々からeverPostでevernoteのノートブックやタグが取得できないというご指摘をいただきました。

everPost – Evernoteをお手軽操作。検索してジェスチャー。整理も簡単。 App
カテゴリ: 仕事効率化
価格: ¥300

この内容を吟味し、検討の場所のコードを修正してみるも、ぼくの環境ではそもそも問題が発生した痕跡すらありませんでした。

しかし、別のiPhoneからAppStoreを経由してアプリをインストールしてみると確かにノートブックやタグが取得できない不具合が発生していました。

これは、どういうことか本当にわからなくなり該当すると思われるコードを再度読み直しました。
それでも原因が特定できず、使っているライブラリのコードも読み、一通り頭に入れなおしてトライ&エラーを繰り返しているところです。

大体の検討はついてきたので、あとは原因を特定して代替案が必要かどうかというところです。

ご利用いただいているユーザーの皆様にはご不便をおかけしますが、もう少しお待ちください。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly