カテゴリー別アーカイブ: tips

iOSシミュレータのリセット

Twitterクライアントの機能を試しています。

ここのところ、Twitterクライアントの機能を試しています。アプリがiPhoneに登録されているTwitterアカウントを利用する場合はまず

「”アプリ名”はTwitterアカウントへのアクセスを求めています」

というメッセージで許可を得ます。

一度OKなりすると、そのあとは設定から ON/OFF を切り替える事はできますが、このメッセージをもう一度出す事が出来ませんでした。。。
もう一度メッセージを出す方法が分かったのでメモしておきます。

 

iOSシミュレータのリセット

iOSシミュレータの「コンテンツと設定をリセット(Reset Content and Settings)」を行うと、もう一度アクセス許可のためのメッセージが出るようになります。

シミュレーション環境のユーザコンテンツと設定を工場出荷時の状態に戻し、インストールしたアプリケーションを削除するには、「iOSシミュレータ(iOS Simulator)」>「コンテンツと設定をリセット(Reset Content and Settings)」を選びます。

「iOS開発ガイド」の「iOSシミュレータの使用」から引用

ただ、その他の設定など全て消えてしまうので、その点はご注意下さい。

 

参考

iOS開発ガイド- iOSシミュレータの使用

 

 

アプリの申請をしたArchiveの場所

またリジェクト

なんかもう、まったく審査が通りません。。。
なんだかクラッシュするってさ。

アーカイブはどこだ?

で、原因調べるのに、申請時にアーカイブしたファイルが必要なんで調べてみました。
どなたかのお役に立つ事はあるのだろうか?

とりあえず、ココにアーカイブした日付毎にディレクトリが出来てます。

/Users/ユーザー名/Library/Developer/Xcode/Archives

 

NSArray を NSMutableArray にキャストするとハマる

NSMutableArray の removeObjectAtIndex で落ちる

NSArray を NSMutableArray にキャストした配列に対して要素を削除しようとすると落ちてしまいます。

などとすると

というエラーになります。

 

正確にはキャストできない

このエラーは 『NSArray のインスタンスに対して、removeObjectAtIndex は呼び出せませんよ』という事のようです。
どうやらこのキャストはコンパイラに型を伝えているだけでインスタンスは NSArray のままのようです。

 

じゃ、どーすりゃいいの?

mutableCopy してあげましょう

これで要素を削除できます。

 

編集後記

もう一人先発が欲しいな

 

UIVIew を角丸にして枠線つけてみる

QuartzCore フレームワークの CALayer クラスを使います。

まず QuartzCore.framework をプロジェクトに追加します。
そして QuartzCore.h をインポートします。

 

あとは以下の2行で角丸になります。

 

さらに枠線をつけてみるならこんな感じ。

 

 

URLやファイル名を指定して画像を表示

タイトルのまんまのメモ

独自オブジェクトの配列(NSArray)の存在チェック

こういう奴いる?

自作クラスのオブジェクトを配列に入れて扱う事は良くあります。

フツーにあります。
フツーあります。

で、その配列に『こういう奴いる?』って確かめたい事が良くあります。

フツーにあります。
フツーあります。

そんな時の為のメモ

 

どーやるの?

NSPredicateを使ってNSArrayからデータを抽出します。
抽出するためのメソッドはNSArrayのfilteredArrayUsingPredicateメソッドです。

で、抽出結果が1件以上あるかでチェックします。

こんなクラスがあったとさ

こんな配列があったとさ

存在チェック

 

参考URL

配列からNSPredicate条件を使ってデータを抽出する方法
http://hachinobu.hateblo.jp/entry/20130205/1360031974

 

 

CoreData の保存場所と確認方法

データベースの中を確認したい

CoreData を使用したアプリを作っていると、開発中にテーブルの中身を確認したいことが良くあります。
フツーにあります。
フツーあります。

そんな時の為のメモ

 

保存場所

CoreDataで保存したデータファイルの場所は以下にあります。

/Users/ユーザ名/Library/Application Support/iPhone Simulator/6.1/Applications/xxxxxxxxx/Documents/アプリ名.sqlite

※ ライブラリフォルダが見れない人はOSによって対処法が違うんでググってちょ

 

どーやって見る?

色々と方法はあると思います。
詳しく知りたいヒトはググってちょ

オイラはこれを使ってます。
AdobeAIR上で動くツールです。

The SQLite Sorcerer
http://afoucal.free.fr/index.php/applications/sqlite-sorcerer/

 

Macが起動しない時にやってみる事

夏に MacBookPro が起動しなくなり、スッタモンダの末にマザーボードを交換し一応動いているのですが、ほんとにごくたま〜に起動しない事があります。

そんな時の対処法をメモしときます。

1.NVRAM(PRAM) のリセット

2 度目の起動音が聞こえるまで、「option + command + P + R」キーを押し続ける。

昔からのMacユーザーでしたらPRAMのクリアと同じです。
NVRAMは、「スピーカーの音量」「画面の解像度」「起動ディスクの選択」などが保存されています。

2.セーフモード(セーフブート)で起動する

起動時に「shift」キーを押す。

セーフモードは、、起動時にいくつかのチェックを行って、特定のソフトウェアが自動的に読み込まれたり、起動したりすることを防ぎます。
起動に結構な時間がかかりますが、私の場合、これで起動する事が多いです。

3.光学ドライブなど(CD、DVD、またはUS メモリ)から起動する

起動時に「C」キーを押す。

これで起動出来れば、ハードウェア的には問題ないものと考えて良いかと思います。
可能であればOSのクリーンインストールなどを行えば問題は解消すると思われます。

4.外部の起動ディスクから起動する。

起動時に「option」キーを押す。

ネットワークボリュームを含めて起動可能なディスクを選択出来ます。
外付けハードディスクなどに起動ディスクを作っておけば、それを使用して起動する事ができます。

参考

自分でできる「Macが起動しないときの5つの対処法」
Intel ベースの Mac で利用できる起動時のキーコンビネーション

起動しなくなる前に

バックアップは取っておきませう。

よく使うコードを静的ライブラリで共有(Workspace + Static Library)

手抜きがしたい

いくつかアプリを開発していると、同じようなコードを書く事が多々あります。
それらをライブラリとしてまとめておいて、色々なアプリから共有する方法をメモ

Workspace をつくる

File → New → New Workspace… を選択し、新規作成する。

アプリケーションProject をつくる

File → New → New Project… を選択し、新規作成する。
保存先を指定するダイアログの Add to: で上記で作成した Workspace を選択する。

Static Library をつくる

File → New → New Project… を選択し、新規作成する。
その際、テンプレートで「Cocoa Touch Static Library」を選択する。

Static Library 側の設定

ターゲット → Build Settings で
Deployment → Installation Directory → $(BUILT_PRODUCTS_DIR)
Linking → Other Linker Flags → -ObjC
Packaging → Public Headers Folder Path → $(TARGET_NAME)

ターゲット → Build Phases で
Copy Files にヘッダーファイル(.h)をすべて追加する。

アプリケーション 側の設定

ターゲット → Build Phases で
ライブラリで作成した.aファイルを関連付ける(ドラッグ&ドロップ)

ターゲット → Build Settings で
Search Paths → User Header Search Paths → $(BUILT_PRODUCTS_DIR)
にしてRecursiveにチェックします。

Archive の際に StaticLibrary のヘッダファイルをアプリケーション側のプロジェクトにコピーしておく。

蛇足

実作業は結構、紆余曲折したので漏れがあるかもしれませんが、これで動作して申請までは行いました。
ただ、 Reject されちゃいましたが。。。(涙)

何度か再申請しても同じ理由で Reject されてますが、原因は恐らくこれとは無関係です。

それにしてもリジェクトの理由をズバリここを直せって言って欲しいっス

参考URL

xcode4のworkspaceを使ってコード共有

[iOS] XCode4.1でのStatic Libraryの作成と利用

Kazzzの日記

Objective-C でクラス名を知りたい

iPhone アプリを作っていて、クラス名を知りたいことがあり調べたのでメモ

で、クラス名が取得出来ます。

例えば、UIViewController に乗ってる View を知りたい場合、以下のようにすると SubView のクラス名がログ出力されます。