XcodeのPBXCp Error

Xcodeのプロジェクトがあるフォルダから、使ってないファイルを取り除いてビルドしたらこのエラーが出てきました。

error: /Users/(…パス…)/取り除いたファイル名: No such file or directory

プロジェクトを選択して、Build Phases => Copy Bundle Resources
から赤くなっているファイルを選択して、下の「-」ボタンで削除。

こちらの手順をそのまま使わせていただきました。

iOSでロケールを判断する

iOSでロケールを取得して判断するには

NSArray *langs = [NSLocale preferredLanguages];
if ([langs[0] isEqualToString:@"ja"]) {
   日本語の場合の処理
} else {
   その他のロケールの処理
}

のように条件分岐します。簡単と言えば簡単ですが、判断するロケールが増えると面倒ですね。

NSUserDefaultの読み書き

NSUserDefaultsで保存、読み込むときのまとめです。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 辞書オブジェクトとして保存
[defaults setObject:辞書オブジェクト forKey:@"キー名"];
// 文字列オブジェクトとして保存
[defaults setObject:文字列オブジェクト forKey:@"キー名"];
// ブール値として保存
[defaults setBool:ブール値 forKey:@"キー名"];
[defaults synchronize];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 辞書を読み込む場合
NSDictionary *dic = [defaults objectForKey:@"キー名"];
// 文字列を読み込む場合
NString *str = [defaults stringForKey@"キー名"]; 
// ブール値を読み込む場合
BOOL bool = [defaults boolForKey@"キー名"];

CoreGraphicsで画像を回転させる

画像を回転させる手順です。以前、座標軸も回転することが分からず時間を費やしてしまいました。

(0) 元の画像

(1) 画像の左下を、中心まで移動する。

(2) 回転させる。
回転は、左下を軸として行われます。このとき座標軸も回転しています。

(3) 高さを戻す。

(4) 幅を戻す。

これで結果的に画像の中心を軸に回転した画像になりました。

// (1)
CGContextTranslateCTM(ctx, width/2, height/2);
// (2)
CGContextRotateCTM(ctx, angle);
// (3)
CGContextTranslateCTM(ctx, 0, -height/2);
// (4)
CGContextTranslateCTM(ctx, -width/2, 0);

0307

Simplenoteのゴミ箱からファイルを戻せるのはどのアプリ?

昨日、Simplenoteの同期がおかしくなるまで、ゴミ箱について考えたこともありませんでした。

そこで、まとめるほどでもないのですがゴミ箱の使い勝手についてアプリを分類してみました。

アプリによってはそもそもゴミ箱が表示されないものもあるし、ゴミ箱から元に戻せないアプリもあるので手元のアプリで調べてみました。

Simplenoteと同期しているアプリで、本家のSimplenote以外で私が使っているのは,
Mac上のnvALTと、Android上のGlance Noteだけなので、他のアプリは分かりません。

ゴミ箱に削除できるアプリ

各SimplenoteとnvALT, Glance Note全部です。

ゴミ箱が表示されるアプリ

  • Web上のSimplenoteサイト
  • Simplenoteアプリ(Mac用)
  • Ssimplenoteアプリ(iPhone用)
  • Simplenoteアプリ(Android用)

要するに、純正アプリのみのようです。

ゴミ箱から元に戻せるアプリ(iPhoneアプリ以外)

  • Web上のSimplenoteサイト
  • Simplenoteアプリ(Mac用)
  • Simplenoteアプリ(Android用)

iPhone用アプリでは戻す方法が分かりませんでした。

とりあえず、ゴミ箱から出したいファイルがあったときは、iPhone以外のSimplenoteを使うということになるようです。

Simplenote:同期が変になったノートを(不完全ながら)修正した

Simplenoteのファイルが変になってしまいました。Mac上からnvALTを立ち上げたら、ファイルの内容が何日か前の古い内容に戻ってしまってました。

Simplenoteのほうでも同様に古い内容になりました。自動的に同期されるのだから当然です。

思い当たるフシといえば、直前にiPhoneのSimplenoteアプリをアップデートしたことですが、それが原因かどうか分かりません。

Simplenoteと同期しているのは、MacのnvALT、iPhoneのSimplenote、AndroidのSimplenoteとGlance Noteです。

0209a

Glance Noteはメニューから選択しない限り自動的には同期しないので、こちらを見ると2日前のデータです。とりあえずこれを活かすつもりで同期させたら、同じ名前のファイルが2つできてしまいました。まぁ、古いほうに統一されるよりは良かったかもしれませんが。

Simplenoteは、ブラウザからSimplenoteのアカウントにログインしてVersion Historyをスライドさせることで以前のデータに戻ってゆくことができます。

0209b

私の場合は古くなってしまったので役に立たないと思っていました。ですが、試してみると、時間を戻すと新しいデータが現れて、また古いデータに戻っていきました。

どうやら、時間の順に「古いデータ → 更新したデータ → 古いデータを上書き」という履歴になっています。

スライドを左右に動かして、いちばん新しそうなデータとしてRestoreしました。

0209c

これがあってGlance Noteのデフォルトでは同期しないことの利点を知ることになりました。これまではいちいち手動で同期なんて面倒だと思ってたんですが、いろんなタイプがあったほうが安全かもしれません。

GoodReaderでカメラロールから読み込む

GoodReader for iPhoneがバージョン3.20になった後、カメラロールの画像を読み込もうと思ってちょっと戸惑ってしまいました。

0114

右上の 0114a をタップするのは想像ついたのですが、下を見ても選択肢がない?

よく見れば 0114b があるのですが、気づくまでけっこう時間がかかってしまいました。

ようやく分かって左にスワイプすると「Import Phots」が出てくるのでタップ。

0114c

ここからカメラロールが表示されるまでに少々時間がかかります。ライブラリにある画像が多いのでしょうか。500くらいなんだけど。

とにかく、写真を取り込めました。ほとんどの人はすぐに気づくのかもしれません、きっと。

iOSのステータスバーのインジケーター

必要なところで以下の行を入れるだけです。

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

0109

表示をやめるときは「NO」にするだけ。

アプリ「TravelOn」では気象データと通貨データの両方を取得している場合があるので、どちらかがデータを取得しているときに表示させ、両方のデータが取得できたときに終了することにしました。

iTunesのAppStore URLの確認

自分のアプリのURLはiTunesConnectで見てたから忘れていました。

iTunesの左のペインからiTunes Storeを選択して、アプリ名を検索。

表示されたら、あとはアプリ名を右クリックしてURLをコピーするだけでした。

検索にマッチするものがSongなどにもある場合は、Appsの検索結果は下の方にあるので、最初の画面には表示されないことがあります。

とっさに戸惑いました。

スクロールしていくとiPhone Apps、iPad Appsが表示されます。

iOSアプリ「TravelOn」をリリース

3つ目のアプリ「TravelOn」をリリースしました。iPhone用です。
約560の都市の天気・通貨レート・カレンダー・時刻を表示できます。

1220

解説ページも用意しました(まだ作業中のところもありますが)。

このアプリはインターフェースも単純だし、簡単な気持ちで作り始めたのですが、通貨レートの情報サイトを選んだり、気象情報データサイトを選ん、カレンダーを選んだりと完成までに時間がかかってしまいました。当初の計画もずいぶんと変更しました。

アプリを作るにはずいぶんといろんなサイトの情報を利用させていただきました。得られた知識はこのブログで公開していきたいと思っているのですが、整理して記事にするにもこなれた知識が必要なんだと痛感しています。