2016年08月28日

iOSシミュレータのデータフォルダ


Xcode7からだろうか?シミュレータで実行した時のデータを保存するフォルダの位置が変わった。

/Users/【ユーザ名】/Library/Developer/CoreSimulator/Devices/【シミュレータデバイスID】/data/Containers/Data/Application/【アプリID】/Documents

【シミュレータデバイスID】、【アプリID】はそれぞれ任意のUUIDが付されるのでなかなか人間がその文字列を見てiPhone6sのフォルダだなと、今開発中のアプリのIDがこれだなと判断するのは難しい。

例えば「4C939428-F8A9-4460-9C30-16D1F8896224」のような文字列になる。

デバイス名はUUIDのフォルダ名の下の「device.plist」中に書かれている。

【ユーザ名】が john とすると例えば下記のようになる。
/Users/john/Library/Developer/CoreSimulator/Devices/4C939428-F8A9-4460-9C30-16D1F8896224/data/Containers/Data/Application/0C73FCD2-16C2-4E96-A3E5-E3A0EF755D88/Documents

ユーザー毎の「ライブラリ」フォルダはこれもいつのころからだったか(Marvericsかな?)不可視ファイルとなっているのでフォルダに移動するには、「ファインダ>移動>フォルダへ移動…」やターミナルから開くなどの方法が必要。

アプリケーション名はバンドルフォルダのほうを見る必要がある。

/Users/【ユーザ名】/Library/Developer/CoreSimulator/Devices/【シミュレータデバイスID】/data/Containers/Bundle/Application/【アプリID】/【アプリ名】.app

各国語のアプリケーション名を知りたければアプリケーションバンドルの中のInfoPlist.stringsを見る。

/Users/【ユーザ名】/Library/Developer/CoreSimulator/Devices/【シミュレータデバイスID】/data/Containers/Bundle/Application/【アプリID】/【アプリ名】.app/【言語ID】.lproj/InfoPlist.strings

データフォルダではなく、一時保存ファイルはtmpフォルダにある。

/Users/【ユーザ名】/Library/Developer/CoreSimulator/Devices/【シミュレータデバイスID】/data/Containers/Data/Application/【アプリID】/Documents

/Users/【ユーザ名】/Library/Developer/CoreSimulator/Devices/【シミュレータデバイスID】/data/Containers/Data/Application/【アプリID】/tmp/
posted by 永遠製作所 at 15:12| 東京 ☀| Comment(0) | TrackBack(0) | iPhone/iPod touch | このブログの読者になる | 更新情報をチェックする

2016年08月11日

Google AdMob SDK 7.9.1

自作アプリの新しいバージョンを開発中。アプリケーション実行時にコンソールにメッセージ出力するようになり気がついた。


<Google:HTML> You are currently using version 7.7.1 of the SDK. Please consider updating your SDK to the most recent SDK version to get the latest features and bug fixes. The latest SDK can be downloaded from http://goo.gl/iGzfsP. A full list of release notes is available at https://developers.google.com/admob/ios/rel-notes.


Google Mobile Ad SDKの新しいバージョン(v7.9.1)がリリースされたようです。

入れ替え方法は簡単。

上記サイトからファイルをダウンロードして、zipファイルを解凍。

GoogleMobileAds.framework
Mediation Adapters/
  GADMAdNetworkAdapterProtocol.h
  GADMAdNetworkConnectorProtocol.h
  GADMEnums.h
  GADMRewardBasedVideoAdNetworkAdapterProtocol.h
  GADMRewardBasedVideoAdNetworkConnectorProtocol.h
  GADMediationAdRequest.h

を古いファイルと置き換える。

これだけ。あとはビルドすればOK。
ラベル:AdMob
posted by 永遠製作所 at 02:05| 東京 ☔| Comment(0) | TrackBack(0) | iPhone/iPod touch | このブログの読者になる | 更新情報をチェックする

2016年06月13日

WWDCノススメ

WWDC 2016が今週開催されます。私はもう何年も参加していないのですが、一応発表内容やセッション内容は国内においてもフォローできるので、できるだけ視聴あるいは記事を読んでキャッチアップしていきたいとは思います。

随分昔のはなしになりますが、過去に書いたWWDCをここから参照できるようにします。



WWDCのススメ ver. 2008
WWDCのススメ ver. 2009
WWDCのススメ ver. 2010
 ※これは加筆修正した村上幸雄さん名義になっています。

2010年版から私が著者名義から外れています。iPhoneが世界的にブレイクして参加者が増加するなかで、WWDCの位置づけや参加者の人数や中身がかなり大きく変化している時期なのに、私自身がこの前年に参加していなくて、その状況の変化を把握できない状態になっていました。このため、内容に責任が持てないと考え、実際に参加している村上氏にお願いし、昔から変わっていない部分は残し、不適切な部分は削除・修正し、新たに変化してきている部分や村上氏自身の考えなどを追加していただいて公開することになったためです。

私の貢献度はこの2010年度版ではなくなっていますが、一応記事を参照する人の助けになればと思いリンクを追加します。

今ではWWDCは開催前から一般のニュース媒体で報道されるほどに有名になり、わざわざオススメしなくとも参加するための競争になるような状況となったため、この記事のアップデートは終了しています。

今年も日本から多くの開発者の方々が参加しているようです。参加者の方々が意義深い一週間をすごされ、その成果が色々な形で花開くことをお祈りいたします。
ラベル:WWDC
posted by 永遠製作所 at 01:10| 東京 ☀| Comment(0) | TrackBack(0) | WWDC | このブログの読者になる | 更新情報をチェックする

2016年03月24日

Swift: conformProtocol()、respondsToSelector:


Objective-Cでプロトコルに対応しているかどうかを判定するconformProtocol関数や、メソッドを持っているかどうかを調べるrespondsToSelectorのSwiftでの代替について。

ただし、Objective-Cとは違いSwiftでは静的な型の決定を行っているのでほとんどがコンパイル時に決定でき、動的に判定することはない。というかそのような使い方は避けるべきと考えられる。

ここではごく基本的なものを示す。個別の事情によりまた別の判定方法を使った方がよいことがあるので、それらはいつか実際の事例毎にまとめたい。
続きを読む
posted by 永遠製作所 at 00:47| 東京 ☀| Comment(0) | TrackBack(0) | Swift | このブログの読者になる | 更新情報をチェックする

2016年03月22日

Swift: クラスの判定


Objective-Cでクラスを判定してなんらかの処理をする場合を、Swiftで実現するのはどうするのか。例えば、isKindOfClass: とか、isMemberOfClass: とかの処理。

「if ( [object isKindOfClass:[Root class]] )」は、そのオブジェクトが、Rootクラスのインスタンスかまたはそのサブクラスのいずれかのインスタンスであれば真になる。もし、判定後にそのクラスとしてなんらかの操作を行うのであれば、キャストして代入すればよい。「Sub1 *sub = (Sub1*)object;」のようにする。

一方、そのインスタンスそのものである時だけ真にしたい場合には、「isMemberOfClass:」を使う。
続きを読む
ラベル:クラス Swift
posted by 永遠製作所 at 12:12| 東京 ☀| Comment(0) | TrackBack(0) | Swift | このブログの読者になる | 更新情報をチェックする