サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
tanaponchikidun.hatenadiary.org
エンティティの継承※2013/06/20 エンティティの継承における懸念を追記 CoreDataで複数Entityを作ったときにAttributeが重複することがあります。 下の場合、Attributeのageとnameが重複しています。 差分もわかりづらく、繰り返し同じことを書かなければいけないので作業効率も悪いです。 この場合、エンティティの継承を使えば共通のAttributeを親Entityに用意して、 子供Entityはそれを受け継ぎ、以下の様に重複部分をなくすことができます。 以下が手順です。 まずは新しくEntityを追加し「Animal」という名前をつけます。 そして、ageとnameのAttributeを「Animal」に追加します。 「CONFIGURATION」からAnimalの「abstract」にチェックをします。 これでAnimalが抽象エンティティになります。
storyboardがconflictした時のマージ手順メモ。 殆どここの通りGit-のブランチ機能-ブランチとマージの基本 <前提条件> ・masterと機能ブランチfooがある ・カレントディレクトリは機能ブランチfoo<やりたい事> ・masterの最新状態を機能ブランチfooにマージしたい ・conflictした箇所はfooの内容は破棄しmasterを生かしたい ※マージせずconflictする前に戻したいならgit reset --hard HEADで。参考:git-resetは結局何を戻すのか <手順> masterの変更をfooにマージ git merge master storyboardがconflictし自動マージが失敗する warning: Cannot merge binary files:xxx/Base.lproj/MainStoryboard.storyboa
AFNetworking 2.0 Migration Guideを脱線メモしながら意訳中です。 AFNetworking 2.0 Migration Guide AFNetworking 2.0 is the next major release of AFNetworking, a delightful networking library for iOS & Mac OS X. As a major release, following Semantic Versioning conventions, 2.0 introduces several API-breaking changes with its new architecture, which adds support for NSURLSession and introduces a new serialization-ba
objective-cで確保するメモリサイズについてのメモ sizeof演算子で変数型のサイズを表示できる。 以下はその例 // (c99ではzuでsize_t型を出力可能) printf("sizeof(short int) = %zu\n", (size_t)sizeof(short int)); sizeofの戻り値size_tは実装によってサイズが異なる。 size_tは__darwin_size_tのtypedefとして定義されている。 以下はMacOSX10.8.sdk/usr/include/sys/types.h内の定義 typedef __darwin_size_t size_t; __darwin_size_tは__SIZE_TYPE__が未定義の場合unsigned longとなっている。 #if defined(__GNUC__) && defined(__SIZE
カプセル化の破壊を抑える為setterは出来る限り使わず、 以下の指定イニシャライザの利用を推奨させたい時(initを呼べない様にしたい) - (id)initWithName:(NSString *)inName age:(NSInteger)inAge ヘッダにclang language extentionsを書けば[[Foo alloc] init];の呼び出し時にコンパイルエラーにできる。 - (id)init __attribute__((unavailable("init is not available"))); 強引に呼ばれてしまった場合は Foo *foo = [[Foo alloc] performSelector:@selector(init:)]; NSAssertやraise:format等で例外を発生させinitを使わせなければよい。 - (id)init {
基本かもしれないですが、UITableViewController内で使うデータアクセスのコードは、 データ管理クラスを間に挟むと、データ詳細を意識しなくて良いので使いやすくなります。 例えば、画面にこんな感じに魚データを表示する場合。 DataManagerというクラスを作って、そいつにデータを持たせます。 データのRead等はManagerにやらせます。 というわけで以下のような感じでコードを書いてみます。 "魚"を表すFishクラス "データを管理する"DataManagerクラス データ管理クラスを使いデータを表示するテーブルビューコントローラサブクラス DataManager.h #import <Foundation/Foundation.h> #import "Fish.h" @interface DataManager : NSObject // 他のクラスからアクセスでき
iPhoneアプリ開発をしているとたまに出会うEXC_BAD_ACCESS アプリがクラッシュした際に原因を探るクラッシュログの表示方法をメモ。 xcode4からなのか、とても簡単にみれるようになっていた。 How to Show crash log on xcode4. 【手順】 1.iPhoneでテストしたいアプリを起動する。 2.いじり倒してクラッシュさせる(してはダメだけども) 3.iPhoneをMacに接続してxcodeを起動。 4.xcodeのメニューから「window」 > 「organizer」でオーガナイザー起動 5.「organizer」 から「Devicesを選択」 6.「organizer」の左に表示される、 「◯◯のiPhone」を選択した後、「Device Logs」をクリックする。 7.クラッシュログのスキャンと生成が自動的に行われる。 進行状況は「organ
AudioPlayerを使って「笛」の音を鳴らしてみたので調べたことをメモ。 肝心の笛(ホイッスル)の音声をどう作ったかはそのうち書きます。 ざっくりとできること 今回試したコード 今回使うAudioPlayerはAVFoundationというフレームワークに入っています。 (上の画像で赤い所にあたります。) 音楽再生のプログラミングはC言語で書かなければいけないものが多くて、コードが複雑になりがちです。 「AVAudioPlayer」はそんなオーディオ再生を「Objective-C」で扱えるようにしたクラスです。 Appleの「Multimedia Programing Guide」を読んだら、 ステレオ再生とか正確な同期、ネットからストリーム再生をしないなら、 これ使ったらいいよ的な内容の文がありました。 If your application does not require ste
xcode4.3.2でプロジェクトにファイルをコピーしたら、 Apple Mach-O Linker (Id) Errorが発生した。 エラー内容はこんな感じ。 Undefined symbols for architecture i386: "_OBJC_CLASS_$_CoreDataManager", referenced from: objc-class-ref in YarukotoViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 原因追加したファイルがコンパイル対象に自動で含まれなくなっていた。 というかコピー時に「ターゲット」にチェックするのを
MagicalRecordのREADMEの抜粋を意訳しつつメモ。 原文のREADMEはこちら ※20140930 MR_contextForCurrentThreadとMR_SHORTHANDが3.0で廃止される事を追記 逐次githubのissuesをご確認下さい。 目次 インストール方法 必要条件 いつ保存すれば良いか 長時間の保存のハンドリング 保存の変更 新しいメソッド 廃止予定のメソッド ARC Support ログ出力 CoreDataスタックの設定 iCloudサポート デフォルトの管理オブジェクトコンテキスト Fetching(フェッチ) 新しいエンティティの生成 エンティティの削除 スレッド上でCoreDataの操作を実行する インストール方法参考:MagicalRecord2.0を使えるように準備する XcodeプロジェクトにMagicalRecordフォルダをドラッグ
基本的な事ですが、byte[]を使う必要に迫られました、、 個人的にとても苦手な所なので、克服するために1つずつJavaの「byte」について調べてみました。 まず「wiki」を見てみました。 Javaのbyteはintやshort等と同じ基本型といわれるもので、 その中でも整数型として提供されているようです。 符号付きの8bitで1000 0000 (-128) 〜 0111 1111 (+127)まで表現できます。 型 デフォルト値 サイズ 範囲 byte 0 8bit符号付き -128〜127 あとはどんどん色々な使い方を試して探っていくこととします。 以下はbyte型の変数に整数の127を代入して出力するコードです。 public class TestByte { public static void main(String[] args) { // Javaのbyte型 // 1
※キーウインドウ上の曖昧な制約を表示する、[UIWindow keyWindow] _autolayoutTrace]を追記 Xcodeのブレークポイントでプログラムを停止している時に入力できるコマンドです。 VisualStudioのイミディエイトウインドウライクに変数の値を変えられます。 値を変更して何度もテストしたい時に便利そうです。 ・参考資料 WWDC 2012 Session VideosのDebugging with LLDB (https://developer.apple.com/videos/wwdc/2012/)※英語 GDBとLLDBのコマンド対応表 (http://lldb.llvm.org/lldb-gdb.html) ※英語,公式 チュートリアル等 (http://lldb.llvm.org/tutorial.html) ※英語,公式 変数のフォーマット (h
Xcode4でJavaDocのようなドキュメントを生成できるDoxygenを試してみました。 Doxygenを使うとiOSのプロジェクトに対してドキュメントを生成することができます。 クライアントからそれっぽいドキュメントを求められた時や、プログラムの関係を整理するのに有用です。 結構手間もかかりますが、必要になる場面がくると思うので少しずつ試していきます。 今回はまずは上の画像のようなとりあえずの形を作る所まで試してみました。 まずはDoxygenをダウンロードします。 Doxygen公式(日本語) 今回は「Mac OS X 10.6 SnowLeopard用」で「http」を選びました。 ちなみに私は「Mac OS X 10.7.4」でLionです、完全に指示を無視しました。 ダウンロードしたDoxygenをアプリケーションフォルダにドラッグ&ドロップ 次にパスを通します。 ターミナル
世間様はiPhone5でにぎわってますねー。 まだまだ勉強中の身なんですが、Objective-Cのブロック(Block)についてテクニック的な話ではなく、 自分がブロックを学ぶときどうしたか?というプロセスってほど大げさでもない手順を書きます。 [参考] Apple公式ブロックプログラミングトピック https://developer.apple.com/jp/devcenter/ios/library/documentation/Blocks.pdf Objective-Cの基礎(Blocks) http://eikatou.net/blog/2012/07/objective-c_kiso_blocks/ ブロックって書き方がなんか苦手で、敬遠してました。 僕と同じで読み辛いなぁと思ってる人は結構いると思ってます。 そんな中、なぜブロックを改めてやるかというと、 公式がデリゲートより
iPhoneシミュレータの起動 作成したiOSアプリケーションを実行する為に使います。 ショートカットキーはcommand + 「R」です。 以下メニューバーの項目です。 iOSシミュレータ・コンテンツと設定をリセット シミュレータを初期化します。アプリをインストールしすぎたり、 一度初期状態にしたいと思ったらこれで全て削除します。 ・iOSシミュレータを終了(⌘Q) ファイル ・スクリーンショットを保存 以下パスに保存されます。 /Users/ユーザー名/Library/Application Support/iPhone Simulator/ビルド時のiOSのバージョン/ Applications/<>/Library/Caches/Snapshots/アプリのbundleID AppStore申請の為にスクリーンショットを撮影するには、 指定したサイズで正確に撮影できるiOS-Sim
NSRangeとは?NSRangeはlocation(位置)とlength(長さ)の2つを持つ、"範囲"を表す構造体です。 文字列の検索、分割、切り出し等に重宝します。 ※2013/06/11 正規表現検索のサンプルを追加 例えば以下のようにrangeOfStringメソッドを使うと、 "列です"という文字列が最初に現れた「位置」と「長さ」をNSRangeという「範囲」で取得することができます。 NSString *text = @"テスト用の文字列です 2012/8/13"; NSRange rangeTest = [text rangeOfString:@"列です"]; 取得できる範囲のイメージは以下です。 検索に失敗した時検索した文字列が見つからない時は、NSNotFoundという値がlocationに返却されるので、 if(range.location == NSNotFound)
簡単にCoreDataを使えるMagicalRecord2.0を試してみました。 まずはGithubからzipを落としてきます。git cloneでもOKです。 参考:MagicalRecord-Github 落としてきたらzipを展開します。 適当にプロジェクトを作ります。「ARC」はON 「Use CoreData」はノーチェックでOKです。 「MagicalRecord」は「ARC」や「iCloud」もサポートしています。 解凍したフォルダーをxcodeプロジェクトにドラッグ&ドロップします。 下のようにチェックをいれておきます。 次にCoreData+MagicalRecord.hをプロジェクト名-Prefix.pchファイルに宣言します。 #import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project us
CotEditorで少しテキスト編集を楽にする正規表現のメモ 正規表現とは編集 検索・置換に便利に使える魔法の呪文。 検索・置換する文字列のパターンを指定できるため汎用性が高く、「先頭が○○で終端が××」「○○か××か△△のいずれかを含む」などの複雑なマッチングも一発で処理できる。 しかし、方言が多い。おのおののツールの.. 続きを読む404 Not Found www2.famille.ne.jp このキーワードを含むブログを見る正規表現といっていいのか微妙な位簡単なものですが、 通常の検索ではできない事なので強引に呼びます。 やりたいことはこんな事です。 ・改行を検索して削除 ・空白行を削除 ・単語を探して単語の末尾に文字追加(後方参照) ではまず、以下のようなテキストの改行を削除してみましょう。 Command+F+「正規表現検索」にチェックをいれ、 以下の様に書きます。 置き換え文
iOS5、Xcode4.3から使えるようになった。 「User Defined Runtime Attributes」を試してみました。 この仕組みを使えば、自分で作ったUIのサブクラスに特定の値を用意し、 実行時に設定される値をInterfaceBuilder(以下IB)であらかじめ決める事ができます。 今回は自作クラスではないですが、 「User Defined Runtime Attributes」の使用方法を以下の2つのViewを使って試してみます。 以下のようなView構成で、 一番上の「 うす黄色ビュー」から、IB上でsuperview.backgroundColorにアクセスし、 親の「フェイスブックっぽい色ビュー」を「実行時に赤い色に変える」という事をしたいとします。 その場合、まずは「うす黄色ビュー」を選択して、 「Runtime Attributes」にドット構文でアク
Macでサクラエディタや秀丸のようにgrep機能を使って、 複数のファイルからキーワードを検索できないかなぁと思っていましたが、 TextWranglerというフリーのエディタアプリで簡単にできたのでご紹介です。 ちなみにgrepとは、どこのファイルの何行目に目当てのキーワードがあるか分かり、 そのファイルへのリンク等も表示してくれる、とても便利な機能です。 詳しくは以下を参考にして下さい。(はてなキーワード引用) grepとは編集 Unix のコマンドの一つ。 複数のファイルから正規表現を用いて文字列を検索する機能を提供する。 grep の名の由来はラインエディタ ed のコマンドの g/RE/p で、正規表現 RE(RegExp) にマッチする全ての行(global)を表示(print)するというところから来てい.. 続きを読む このキーワードを含むブログを見る 複数のファイルから検索
わかればいいやという程度、以下ドキュメントの適当意訳 ドキュメント外のフォーマット指定子も少しずつ追記予定。 Apple公式 String Format Specifiers 指定子 説明 %@ Objective-Cのオブジェクト、descriptionWithLocale又はdescriptionによって返された文字列。CFTypeRefオブジェクトの場合はCFCopyDescriptionの結果を表示する %% '%' 1文字 %d, %D, %i 符号付き32bit整数(int) %u, %U 符号なし32bit整数(unsigned int) %hi 符号付き16bit整数(short) %hu 符号なし16bit整数(unsigned short) %hu 符号なし16bit整数(unsigned short) %qi 符号付き64bit整数(long long) %x 符号な
ムームードメインで取得した独自ドメインでGoogleAppsを利用する手順。 通常Gmailは◯◯◯.gmail.comといったアドレス形式ですが、 ◯◯◯.独自ドメイン名.com等の形式で、 「独自ドメイン名でGmailを使えるようにする」というのをゴールに作業をしていきます。 作業前の状態としては、独自ドメインはムームードメインで取得済みです。 Webの情報が豊富だったので、手間はかかりましたが思いのほか失敗が少なくできました。 まず、以下サイト様を参考にGoogleApps無料版を申し込む http://g-tips.net/apps/account/appsaccount.html 登録手続き時、TXTレコードという項目が表示される画面まで作業が進んだら、 TXTレコードをコピーして、現在の画面は残したまま、 ムームードメインのページを開きます。 ムームでの作業は以下サイト様を参考
iPhoneの幅は320なので、コード内にこの様に書けますが、、 self.beforeX = 320; よく使う数値や文字列はできればハードコーディングをしたくないです。 こんな感じに使えると分かりやすいし、定数化してあるので後で変更があっても楽です。 self.beforeX = IPHONE_WIDTH; 以下手順のメモです。 まず「New File」からhファイルを作ります。 名前は定数とわかるConst.h等をつけておきます。 ファイルに例えばこんな感じにまとめます。 /**定数を定義します。 */ #define IPHONE_WIDTH 320 #define IPHONE_HEIGHT 480 #define MAX_PAGE 10 このまま定数を使う予定のmファイルに#importしても定数を使えますが、 面倒なのとインポートの重複をさけたいので、 Supporting
iPhoneでステータスバーを消して全画面表示をした際のメモ。 以下をviewDidLoad内等に追記した。 //全画面表示 [UIApplication sharedApplication].statusBarHidden = YES; //画面サイズがxibファイル等で決まっていて、高さが合わない時はフルスクリーンサイズで上書きする。 [self.view setFrame:[[UIScreen mainScreen] bounds]]; [self.view setFrame:[[UIScreen mainScreen] bounds]];の部分は、 xibファイル等でステータスバーを消していない時に追記がいる。 このコードがなくても、以下をxib又はstoryboardで設定すればOKっぽい。 ・Status BarをNoneに設定 ・SizeをiPhone/iPod Touch
使いやすく無料の国産テキストエディター CotEditorのよく使うショートカット等を中心に少しまとめます。 Cocoa標準のものも混ざっています。 目次 コード入力補完の設定 テキストの矩形選択 指定行をシフト エディタを分割 現在編集中のファイルをFinderで開く 検索 検索文字をハイライト 辞書を表示する キーバインドを設定する アウトラインメニューを設定する CotEditorで少し作業を楽にする正規表現基本(※別記事) CotEditorで動くスクリプトを作るには?(※別記事) ショートカットのキーバインドは環境設定で変更可能です。 ダウンロードはこちらから↓ CotEditorダウンロード コード入力補完の設定(PHPの場合)カラーリングをPHPに変更 環境設定 > 一般 > 入力補完候補リスト > ファイルに出現する単語+カラーリングスタイルからの候補にチェック 上記を設定
iPhone実機、iPhoneシミュレータに保存した.sqliteのファイルを、 GUIアプリケーションのNavicatで確認する手順のメモです。 今回の流れ Navicat for SQLiteのダウンロード サンプル.sqliteファイルの準備(CoreDataテンプレートで作成) NavicatでiPhoneシミュレータ上の.spliteファイルを確認 NavicatでiPhoneシミュレータ上の.spliteファイルを追加 iPhone実機上の.sqliteファイルを確認する方法 まずNavicat for SQLiteの無料版をダウンロードします。 30日間経過後は機能が制限されます。 Navicatのダウンロード ダウンロードしたdmgファイルをクリックして、 NavicatのアイコンをApplicationsにドラッグ&ドロップしてインストールをします。 これでアプリの準備は
Xcode4でコマンドライン引数を設定して、 CoreData内部で呼ばれているSQL文を表示する方法をメモ 「Product」> 「Manage Schemes」> 「Edit」>「Arguments」 >「+」を押す > 追加された引数に以下コマンドを入力 SQL文をログ表示するコマンドライン引数 -com.apple.CoreData.SQLDebug 1 これでログにSQL文が表示されるようになる。 ※SQLのログを出力する為のものなので、当然NSInMemoryStoreTypeやXML等ではログがでないので注意 画像だと以下の手順です。
前回はUIStoryboardを使ってみました。 本当に使ってみただけで一方通行の画面遷移でした。帰れません。 今回はUIStoryboardのmodalで表示した画面から元の画面に帰れるようにしてみたいので、 画像でみるとこんな感じの動きをつくります。 前回の続きから初めていきます。 まずは2画面目に対応するUIViewControllerのサブクラスを作ります。 プロジェクトを右クリックして > NewFile > UIViewControllersubclass を選択します。 ファイル名は「MyModalView」でwith xibのチェックは外しておきます。 これで、MyModalView.hとmファイルが作成されました。 MainStoryboardファイルを選び、 2画面目のViewControllerを選択します。 「Identity Inspector」>「Custom
前回はモーダルビューを表示して、もとのビューに戻るまで試しました。 今回は戻った時に選択されたボタンに応じて、もとのビューに異なった処理してみます。 Redが押されたらStory1を赤に、Blueが押されたら青にします。 なんか図はごちゃごちゃして見にくくなってしまいました。 進めてみればなんとなく分かると思います。 前回の続きから進めていきます、 まずMainStoryboard.storyboardにボタンを2つ追加して、 ボタン番号を識別するためのタグをセットします。 「Red」は1で「Blue」は2です。 次にViewControllerを右クリックして作成済みのActionを見つけ、 controlを押しながらコネクタを「red」ボタンに繋げます。 イベントは「touch up inside」を選択します。 同様に「blue」ボタンにも繋げます。 これで1つのActionに複数の
次のページ
このページを最初にブックマークしてみませんか?
『Object for cutie』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く