読者です 読者をやめる 読者になる 読者になる

日々精進

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

Mac上のProvisioning Profileが保存されているフォルダのパス

iOS

これたまに必要になるけどいつも忘れる。以下パスに保存されている。 ~/Library/MobileDevice/Provisioning Profiles 参考: Find provisioning profile in Xcode 5

AppCodeからアプリを実機で動かそうとすると、「failed installing application, reason: Error Domain=JBDeviceKitErrprDomain」エラー

iOS

XCodeからは動かせるのになぜ。。 下記サイトではcleanビルドするか、Resourcesフォルダの設定を直せば直るよと書いてあるが、cleanビルドしてもだめだしResourcesフォルダは普通に動いていた時から触ってない。。 結局XCodeから実行してしのいだ。 参考: i…

XCodeを実機上で動いているプロセスにアタッチできない

iOS

XCodeのメニューのDebug -> Attach to Process -> By Process Identifier (PID) or Name... からアタッチ出来そうだが、出来なかった。。やったことは以下。 メニューに実機で動いているアプリ名の一覧が出るのでそれを選んでも「Connection Lost...」という…

UIPopoverController#contentViewControllerに代入できない。

iOS

UIPopoverController#contentViewControllerに代入できなくて、再表示時にcontentViewControllerのインスタンスを変更している箇所で不具合が発生した。 原因はSDK8より、UIPopoverController#contentViewControllerが変更不可能になっていることっぽい。(再…

CharlesでiOS Simulatorの通信をキャプチャする

iOS

Charlesを起動しても、iOS Simulatorの通信をキャプチャしてくれなくて困っていたが、 以下で直った。 メニューのProxy>Mac OS X Proxy にチェックを付ける iOS Simulatorを再起動する Charlesを起動してから iOS Simulatorを起動しないといけないっぽい。 …

iOSビルド時に「Warning: The Copy Bundle Resources build phase contains this target's Info.plist file」警告

iOS

原因はPlistのTarget Membershipにチェックが付いていることなので、 はずしてやればよい。 詳しい手順は下記サイト参照。 『アプリ作成日記 WARNING: The Copy Bundle Resources build』

iOS8でUITableViewCellのReorderControlが消える

iOS

一度画面外にいって再度表示されたCellのReorderControl(並べ替えマーク)が消えるという不具合。 これはiOS8のバグらしい。Cellのサブクラスで以下を実装すれば直る。 - (void)prepareForReuse { [super prepareForReuse]; [self setEditing:NO animated:N…

UISearchBarの中のTextFieldの背景色を変更する

iOS

UISearchBarのsearchBarStyleをminimalにする。 UISearchBarを持つViewControllerで以下を実装する - (void)viewDidLoad { [super viewDidLoad]; UITextField *textField = [self findTextFieldOfSearchBar:self.searchBar]; // 背景色を白に変更 [textField…

iOS7,iOS8でTableViewCellの背景色が白になる

iOS

IB上でbackgroundColorをclear colorにしても効かない。 コードからbackgroundColorを設定してやらないといけない。 CellクラスのawakeFromNibあたりで以下を実行すると直る。 iOS SDK8でビルドする前は背景色透明になってたのにな。。 self.backgroundColor…

iOS7,8でモーダルビューの背景色を半透明にする

iOS

iOS7と8でやり方が違うので、以下のように分岐させる。 IS_GREATER_THAN_OR_EQUAL_TO_IOS_8は独自に定義したマクロ。 // モーダルビューの背景を半透明にし、fadein, fadeoutさせるための設定 if (IS_GREATER_THAN_OR_EQUAL_TO_IOS_8) { // これが無いとモー…

2/1からiOS8SDKと64bit対応が必須になるのは新規アプリのみで、更新する場合は6/1から

iOS

めっちゃ勘違いしてたんだけど、既存アプリを更新する場合はiOS8SDKと64bit対応は6/1以降で大丈夫らしい。今日(12/18)来たメールで知った。 原文は以下。 Dear Developer, As we announced in October, beginning February 1, 2015 new iOS apps submitted t…

NavigationBarの色を変更する

iOS

iOS SDK8でビルドするとNavigationBarの色が白になってしまった。 iOS SDK7まではUINavigationControllerのbackgroundColorと同じ色になっていたのに。。 NavigationBarのbarTintColorでNavigationBarの色を設定すると色を変更できた。 参考: How to change…

iTunes12を使ってipaファイルを実機にインストールする

iOS

久しぶりにOrganizerを使ってipaを実機にインストールしようとしたら出来なくなってた。。 今はiTunesを使ってやるらしい。 手順は下記記事参照。この手順分かりづらいよ。。Devicesウィンドウにドラッグ&ドロップでインストール出来るようにしてほしかった…

Xcode6でiOS6のシミュレータを起動できない

iOS

iOS6のシミュレータを起動したい場合はXcode5をインストールしてそっちからアプリを実行するしかないらしい。 Appleの古いバージョン切りは相変わらずアグレッシブだなぁ。 参考: Run app in iOS 6 Simulator in Xcode 6

iPhone構成ユーティリティはMavericks以降で使えない

iOS

かなり今更な話だが、久しぶりにiPhone構成ユーティリティでipaファイルを 実機にインストールしようとしたらクラッシュして困った。もうiPhone構成ユーティリティはメンテされてないらしい。 XCode6からオーガナイザでもインストール出来なくなってるし、困…

iOSアプリの申請を自動化するツール「deliver」

iOS

まだ使ってないけど、気になる。IPAのアップロード、スクリーンショットのアップロード、アプリのメタデータの更新がCLIからできるらしい。 'Deliver' - Automatically release iOS app updates and screenshots デプロイ自動化したい。。

TabbarItemのImageが正しく表示されない

iOS

以下の画像のようにタブバーより画像の方がちょっと上にずれてしまう。 [tabBarItem setImageInsets:UIEdgeInsetsZero]でInsetsを設定してもだめ。 これはUITabBarの仕様っぽい。 選択状態と非選択状態のtabBarItemの画像を切り替えたい場合は以下のサイトで…

Xcode6でビルドすると「'XCTest/XCTest.h' file not found」

iOS

Kiwiのバージョンが古いことが原因だった。 Kiwiを2.3.0にバージョンアップすると直った。 2.3.0からはXCTest版が標準となっているので以下のようにする。 pod 'Kiwi', '2.3.0'

iOS8シミュレータでテキストフィールドを選択してもソフトウェアキーボードが表示されない

iOS

原因はシミュレータの仕様変更。 Cmd+Kを押すと表示される。が、キーボード右下にある「∨」みたいなキーをタップして キーボードを隠すと再び表示されなくなる。 誰得なんだこの仕様。。 参考: Missing keyboard on iOS8 simulator?

iOS8SDKでビルドしたらdescriptionプロパティ・hashプロパティをoverrideしているクラスで「use of undeclared identifier」エラー

iOS

原因はNSObjectの以下のメソッドがreadonlyプロパティに変更されたこと。 ・hash ・superclass ・description ・debugDescription これによって、_descriptionのようなインスタンス変数が自動で作られなくなった。 以下のようにしてインスタンス変数を手動で…

Today Extensionの下部にスペースができる

iOS

原因はToday Extensionのマージンがデフォルトではleft:47, bottom:39であること。 以下を実装すると下部のマージンを0にできる。 - (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets { defaultMarginInsets.bot…

XCodeでアプリを実行すると「Could not launch <appname> failed to get the task for process xxxx」または「A signed resource has been added, modified, or deleted.」エラー

iOS

Adhoc版とそうでない版のスキーマを切り替えて実行したりすると、掲題のエラーが良く出る。 以下の対応で直った。 Cleanビルド(これで大抵直る) XCode再起動 Adhocスキーマはそのままでは実機で実行できない。プロビジョニングファイルと証明書を一時的に…

socket.io-objcでSSL通信をすると、「There was a problem communicating with the secure web proxy server (HTTPS)」エラー

iOS

原因は自己証明書を使っていること。 socket.io-objcはDEBUGマクロが1の場合は自己証明書を許可するが、 0の場合は掲題のエラーが出る。 SocketIO.mで定義されているDEBUG_CERTIFICATEを常に1にすると常に自己証明書で通信できる。 でも正しい解決策は証明書…

UITableViewのSeparator InsetのLeftを0にしても区切り線が一番左までこない

iOS

Separator Insetの他にlayoutMarginも変更しないといけない。 // CustomCellクラスに実装する - (void)awakeFromNib { [super awakeFromNib]; [self setSeparatorInset:UIEdgeInsetsZero]; [self setLayoutMargins:UIEdgeInsetsZero]; } // CustomViewContro…

Today Extensionの高さの最大値の計算式

iOS

以下の式で計算できる。 iPhone: float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 126; iPad: float maxHeight = [[ UIScreen mainScreen ] bounds ].size.height - 171; 参考: &amp;lt;a href="http://stackoverflow.com/questions/24…

XCode6でiOS sdk7を使ってビルドする方法

iOS

XCode5の中にあるiOS sdk7にsimlinkを張ればよい。 以下はアプリケーションフォルダにXcode6を「Xcode」という名前で、Xcode5を「Xcode5」という名前でインストールしている場合のコマンド。これを実行してXcodeを再起動するとBase SDKとしてiOS7.1を選択で…

iOS WidgetでCoreDataを使うと「Failed to inherit CoreMedia permissions from 552: (null)」

iOS

ググっても解決した例が見つからなかった。。 やむを得ず、本体アプリとWidgetでDBを共有するのを断念し、それぞれ別のDBを作るようにした。 解決策ご存じの方いらっしゃいましたらコメント頂けますと幸いです。

XCodeでビルドすると「missing required architecture armv7 in file xctest」エラー

iOS

スキーマの設定が原因。 Edit Scheme...>Build>Test Targetの「Test」以外のチェックを外すと直った。 参考:ios - missing required architecture armv7 in file XCTest on building application target - Stack Overflow

build Configurationを追加し、それでビルドすると「Library not found for -lPods」エラー

iOS

CocoaPodを使っており、後からbuild Configurationを追加した場合に発生する。 原因は後から追加したbuild Configurationに対してCocoaPodによる設定がまだされていないため。 pod installを実行すると直った。

Widgetと本体アプリでDBを共有する方法

iOS

下記記事の通りにやるとできたので、ここに書くことないです。。感謝! 参考:Xcode 6 (Swift + Travis CI + iOS 8) - ja.ngs.io

ビルドすると「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できないんだ…