日々精進

新しく学んだことを書き留めていきます

iOS

ビルドすると「Undefined symbols for architecture i386: "_utf8_nextCharSafeBody"」エラー

iOS

プロジェクト>Target>Build Phases>Link Binary With Libraryにlibicucore.dylibを追加すると直った。 参考:Undefined symbols for architecture i386: "_utf8_nextCharSafeBody" · Issue #128 · square/SocketRocket · GitHub

OSX YosemiteでiOSアプリの動画を撮れる

iOS

これは便利そう。エビデンス取るときにスクショだけだとよくわからんという時あるよね。 Looxcieのように動画を撮りっぱなしでテストを実行し、不具合が発生したらMac側で保存ボタンをクリックするとそこから30秒前までの動画をファイルに保存してくれる機能…

pod installしてビルドすると「Duplicate Symbol...」エラー

iOS

直接の原因はなぜかlibPod.aの他に各Podの.aファイルまでリンクしようとしているため。 pod installを再度実行したら直った。 なんだったんだろう。。

UITableViewのrowHeightが-1になる

iOS

iOS8からSelf Sizing Cellsという機能が導入され、セル高さをセルが決めるようになったので、UITableViewのrowHeightが-1になってる。 rowHeightがほしければセルのオブジェクトを作って計算させること。 参考:objective c - Xcode 6 iOS 8 UITableView row…

MagicalRecordを使ってテスト用にCoreDataオブジェクトを生成する

iOS

data storeをmemoryにして、contextからオブジェクトを生成すればOK。 [MagicalRecord setupCoreDataStackWithInMemoryStore]; NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext]; CurrencyPair *cp = [CurrencyPair MR_create…

NSNumberFormatterでフォーマットしたら0.1が.1になってしまう

iOS

minimumIntegerDigitsを設定すれば0が消えない。 [formatter setMinimumIntegerDigits:1]; 参考:cocoa - No zero before decimal point - Stack Overflow

canMoveRowAtIndexPathが呼ばれない

iOS

canMoveRowAtIndexPathもmoveRowAtIndexPathも実装してるのになぜ呼ばれないんだ・・と思っていたら、canEditRowAtIndexPathを実装してなかったのと、self.tableView.editing = YESにしてなかった。 並べ替えをする場合、TableViewを編集モードにしないとい…

UIRectEdgeNoneを設定すると、タブバー・ナビバーの背景色がグレーになる

iOS

原因は、UIRectEdgeNoneによりタブバーなどの下にViewが入り込まなくなったので、透過させる必要ないでしょということでUIKitが勝手に不透明にするため。そのときなぜか色が変わるっぽい。 白にしたい場合はタブバー・ナビバーのtranslucentをNOにすればよい…

cellForRowAtIndexPathが呼ばれない

iOS

numberOfRowsInSectionは呼ばれてるし、1以上の数を返しているのになぜ。。と思ったら、TableViewのFrameが小さすぎて1行も表示できない場合、呼ばれないらしい。 Frameを大きくすると呼ばれるようになった。 参考:iphone - cellForRowAtIndexPath: not cal…

iOS8のToday ExtensionをRunすると、XCodeが「Waiting to attach」のままでattachされない

iOS

XCode6.1GM Seed2で発生。 シミュレータでwidetを表示している状態でRunすると起きる。 一度発生するとアプリを削除しないと直らない。 widget(通知センター)を閉じてからRunすると発生しない。 XCodeまだまだBuggyだなぁ。。Betaを使ってる方が悪いのか。 …

UITabBarItemの文字色等を変更する

iOS

UIAppearanceを使えば変更できる。 例は以下。 [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} forState:UIControlStateNormal]; 参考:uitabbar - change tabbar text color,iPhone - Stack O…

.hをimportしているところで「lexical or preprocessor issue file not found」ビルドエラー

iOS

原因はTarget>Build Settings>Header Search Pathsにcocoa podがPodsのパスを書くんだけど自分でHeader Search Pathsをいじった時の値でそれが上書きされ、Podsの.hを検索できていなかったため。 Targetで設定しているHeader Search Pathsを削除したら直った…

Product Nameを変更した後でビルドすると、Testターゲットで「ld: file not found ... clang: error: linker command failed with exit code 1 (use -v to see invocation)」ビルドエラー

iOS

原因はTestターゲット>Build Settings>Testing>Test Hostにテスト対象のアプリのパスを書くんだけど、このパスにProduct Nameが含まれておりそれが古いままになっているため。 変更後のProduct Nameに直すと直った。 テスト対象アプリのInfo.plistからProduct…

SimPholders2でiOSシミュレータで動かしたアプリのDocumentフォルダをすぐ開く

iOS

SimPholders2はメニューバーに常駐してiOSシミュレータで動かしたアプリのDocumentフォルダをすぐ開けるようにしてくれる。 これは便利だ。 SimPholders2

「diff: /../Podfile.lock: No such file or directory」ビルドエラー

iOS

原因はBuild Settings>User-Defined>PODS_ROOTがないため。 PODS_ROOTを追加し、値に${SRCROOT}/Podsを入力すると直る。 PODS_ROOTがない原因は謎。。Podfileの書き方が悪いのかもしれない。

「[MagicalRecord swizzleShorthandMethods]: unrecognized selector」エラー

iOS

実行時に「[MagicalRecord swizzleShorthandMethods]: unrecognized selector」というエラーが出た。 原因はPodプロジェクトをビルドし、リンクする時にデフォルトの設定では使われていないシンボルを削除すること。 アプリのターゲットのBuild SettingsのOt…

CoreDataでDBからデータを取得しようとすると「executeFetchRequest:error: A fetch request must have an entity」

iOS

原因はAppCodeでクラス名をRenameした時に、mogeneratorで生成したクラス内の以下のようなところのEntity名もRenameされてしまっていたこと。 return [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:moc_]; Enti…

XCodeでビルドすると「Pods-resources.sh: line 5: /resources-to-copy-.txt: Permission denied」エラー

iOS

ビルドターゲットのUser-DefinedにPODS_ROOTが無いか、値が設定されていないことが原因。 PODS_ROOTを追加して値を${SRCROOT}/Podsにすると直る。 pod installすると勝手に追加してくれるはずなんだけどな。。

cocoapod 0.34.1でpod installした後XCodeでビルドすると、「Undefined symbols for architecture x86_64」エラー

iOS

ビルドエラーの直接の原因は各Podライブラリをビルド’いたバイナリがlibPods.aにリンクされていないこと。 libPods.aの容量が4KBしかないし、nmでシンボルテーブルを見てもほとんどクラスが無い。 以下コマンドでcocoapodsの0.34.1をアンインストールして0.3…

atosでクラッシュレポートをsymbolicateする

iOS

以下のようなコマンドでsymbolicateできる。が、なんかヘン。。symbolicateして表示されたメソッド名が間違ってるっぽい。 atos -arch armv7s -o アプリ名.app.dSYM/Contents/Resources/DWARF/アプリ名 0x00407a5fなんでもっと簡単にsymbolicateできないんだ…

オライリーのiOS8関連の書籍が50%OFF!

iOS

太っ腹すぎる・・・早速数冊購入しました。 New iOS 8 Ebooks & Video Training - O'Reilly Media - O'Reilly Media

iOS7でUISwitchをタップし、そのままドラッグすると値が変わってないのにvalue changedイベントが何度も呼ばれる

iOS

おそらくiOS7のバグ。 どんな現象かは以下を見るとよくわかる。 ios - iOS7 UISwitch it's Event ValueChanged: Calling continuously is this Bug or what..? - Stack Overflow 解決方法は以下。 Viewのプロパティにvalue changedイベントが呼ばれる前の値…

UITableViewのdelegate, dataSourceはdealloc時にnilを代入した方がいい

iOS

UITableViewのdelegate, dataSourceはassignなので、 UIViewControllerのdeallocメソッドでnilを代入した方がいい。 そうしない場合、以下の手順でbad accessが発生することがあるらしい。 ・UITableViewを速くスクロールさせる ・スクロール中に戻るボタン…

NSRangeを生成する方法

iOS

2013-09-14 - 日々精進でCGRectを生成する方法について書いたけど、 この構文は構造体一般に使えるので、NSRangeの生成にも使える。 ただし、直接引数に渡すとコンパイルエラーになる。一旦変数に格納するとOK。 NSRange HEADER_VERSION1 = {0, 4}; NSRange …

iOS8 beta5でUINavigationControllerのpushViewControllerでViewControllerをPushしてもすぐにはviewControllersにaddされない

iOS

なんだろうこの謎現象。。以下のコードのような現象が発生する。 self.viewControllers.count; // countは0 [self pushViewController:vc animated:NO]; self.viewControllers.count; // countが1にならない! animatedがYESだと常にcountが1にならないっぽ…

iOS8 beta5でUIPickerTableViewを二回表示させると「Assertion failure in -[UIPickerTableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:], /SourceCache/UIKit/UIKit-3302.3.1/UITableView.m:9244 」エラー

iOS

発生した状況は以下。 ・iPadアプリ ・ポップオーバーの中にUIPickerViewを置いている ・二回ポップオーバーを表示させると、掲題のエラー発生 ・但し、同じクラスの別インスタンスに同じ操作を行っても出ないことがある UIPickerViewのdataSourceがnilにな…

UIWebViewの初期表示のzoom倍率を設定する方法

iOS

webViewDidFinishLoadメソッドの中で以下を実行すると設定出来る。 [webView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 5.0;"];でも、初期の倍率より小さく出来なくなるっぽい。 js実行したり、HTMLをいじったりして表示を変え…

ObjCで文字列が数値を含むかどうかを判定する

iOS

以下で判定出来る。YESなら数値を含む。 [string rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]].location == 0参考:iphone - Determine if NSString's first character is a number - Stack Overflow

storyboard上のview controllerのサイズを変更する

iOS

初期状態では変更出来ないので変更出来るようにする方法。 以下記事を参照してもらえばわかるけど、ViewControllerを選択し、Sizeをfreeformに変更すればOK。 参考:iphone - Changing size of view controller on storyboard for editing purpose? - Stack …

PushしたViewControllerのviewWillDisappearが呼ばれない場合がある

iOS

今日知ってびっくりしたんだけど、 画面を表示してもviewWillDisappearが呼ばれないケースがある(viewWillAppearは呼ばれる)。 どのようなケースかというと、 ・pushViewController: animated:を使って、アニメーション付きでViewControllerAを表示する ・…