サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
xcatsan.blogspot.com
SQLite を見てみよう。 sqlite> .tables ZBLOGENTRY ZTAG Z_1TAGS Z_METADATA Z_PRIMARYKEY 新しく Z_1TAGS テーブルが追加されているのが分かる。 sqlite> .schema z_1tags CREATE TABLE Z_1TAGS ( Z_1ENTRIES, Z_2TAGS ); CREATE INDEX Z_1TAGS_Z_1ENTRIES_INDEX ON Z_1TAGS (Z_1ENTRIES); CREATE INDEX Z_1TAGS_Z_2TAGS_INDEX ON Z_1TAGS (Z_2TAGS); 中身を見ると、いわゆる中間テーブルで ZBLOGENTRY と ZTAG へのリレーションを持っている。 データはこんな感じ。 sqlite> select * from z_1tags; 2|1 2
► 2010 (165) ► 6月 (13) ► 5月 (31) ► 4月 (30) ► 3月 (31) ► 2月 (28) ► 1月 (32) ► 2009 (366) ► 12月 (31) ► 11月 (30) ► 10月 (31) ► 9月 (30) ► 8月 (31) ► 7月 (31) ► 6月 (30) ► 5月 (31) ► 4月 (30) ► 3月 (31) ► 2月 (29) ► 1月 (31) ▼ 2008 (345) ► 12月 (31) ► 11月 (30) ► 10月 (31) ► 9月 (30) ► 8月 (31) ► 7月 (31) ► 6月 (31) ► 5月 (31) ▼ 4月 (30) RubberBand(その14)縦横比率を維持したままリサイズ RubberBand(その13)決まった単位でリサイズ RubberBand(その12)サイズ表示 Sim
(前回)Cocoaの日々: CoreData - リレーションシップ(4) タグを使った検索 前回までは多対多のリレーションシップでを扱ったが、今回は一般的なマスター・ディティール(1対多)を扱ってみる(順番でいけばこっちの方を先に試すべきだったかもしれない)。 まず BlogComment というモデルを追加し、BlogEntry と関連づける。 設定。 BlogComment.entry は、必須(非オプション)、削除ルール=カスケード、としておく。 コメント登録コード: -(void)addComment{ NSManagedObjectContext* moc = [self managedObjectContext]; // (1) fetch from BlogEntry NSFetchRequest* request = [[NSFetchRequest
(前回)Cocoaの日々: SimpleCap - ウィンドウキャプチャで下のウィンドウも対象にする(3) 2つの CGImage を合成するには CGBitmapContext を使う。処理の流れは次の通り。 1. CGBimapContext を作成する - CGBitmapContextCreate 2. 最初の CGImage を作成した CGBitmapContext へ描く - CGContextDrawImage 3. 同様にして 次の CGImage を CGBitmapContext へ描く - CGContextDrawImage 4. CGBitmapContext から CGImage を取得する - CGBitmapContextCreateImage CGBitmapContext の作り方は ADCにサンプルがある。 Quartz 2D Programming
-[NSManagedObjectContext reset] を試す。 コードを追加し、 - (IBAction)resetAction:sender{ [self.managedObjectContext reset];} ボタンに紐づける。 実行。resetボタンを押すと、 データが消える。 これは NSManagedObjectContext(メモリ)上のデータが消えただけで、ディスク上のデータは残っている。 試しに reload ボタンを追加する。 ボタンが押されたら、NSArrayController を使っているので prepareContent を投げてみる。 - (IBAction)reloadAction:sender{ [arrayController prepareContent];} すると reset で一旦消えた後、 reloadボタンで復活。
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard NSManagedObject の Object ID NSManagedObjectには、オブジェクトを一意に識別する為にObject ID割り振られている。この ID は NSManagedObjectID型として定義されていて、-[NSManagedObject objectID] で取得できる。 NSManagedObject Class Reference - objectID NSManagedObjectID このNSManagedObjectIDは次のメソッドを持っている。 - (NSEntityDescription *)entity - (BOOL)isTemporaryID - (NSPersistentStore *)persistentStore -
(前回)Cocoaの日々: CocoaでXML TBXML を使うサンプルを作ってみた。 ソースは GitHub からどうぞ。 TBXMLSample at 2010-03-31 from xcatsan's SampleCode - GitHub 以下、サンプルを作る手順。 まず TBXML をダウンロードする。 TBXML V1.3 - The very fast, light-weight XML parser for Apple iPad, iPhone & iPod Touch
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard git のタグ付けを試行錯誤。ようやく感じがつかめた。今後はサンプルを作ったらコミット&タグ打ちして、そのタグのついた github の URL を掲載すれば良いことがわかった。 (1) ファイル TEST.1 を追加 $ touch TEST.1 $ git add TEST.1 $ git commit -m "add" [master a890359] add 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 TEST.1 $ git push origin master Counting objects: 3, done. Compressing objects: 100% (2/2)
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard 以前、書いたようにブログ書き支援用の小アプリを作る。 Cocoaの日々: SimpleCapへ Webページのスクリーンショット機能を追加する(予定) HTMLのAタグとサムネイル画像を作るようなアプリを考えている。名前は BlogAssistant にしよう。このデータを CoreData で管理させようと思っていろいろ試行錯誤している。今回は簡単なモデルを作成し、それを NSTableView へ表示させてみよう。 Xcodeで Core Data Application を作成する (以下、MacOSX10.5、XCode 3.1.1で操作) 新規プロジェクトを作る。後々 Safariのプラグインに変える予定だが CoreDataの挙動を確認しながら作りたいのでまずは単体
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard 今度は拡大縮小と移動の Undo/Redo ができるようにする。 Cocoa には Undo用の強力なフレームワークが用意されていて簡単に実装できる。Undo時に適用するメソッドを NSUndoManager へ登録しておくと、Undoが呼ばれた時に自動的にそのメソッドが呼出される。プログラマは複雑なUndoの管理をする必要はなく、ただ復元の為のメソッドをNSUndoManagerへ登録するだけで良い。 その状態でユーザが Undoを実行すると NSUndoManagerが自動的に登録されたメソッドを自動的に呼出す。 RubberBandでの実装ポイントは2つ。 まず拡大縮小および移動直前に、現在の情報を NSUndoManager へ登録しておく。 - (void)mouse
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard (前回)Cocoaの日々: CoreData - Object ID(その3)Object ID から NSManagedObject を取得する Object ID から NSManagedObject を取得するメソッドは、前回の -[objectWithID:] を含め3つある。 クラス:NSManagedObjectContext - (NSManagedObject *)objectWithID:(NSManagedObjectID * - (NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID - (NSManagedObject *)existingObjectWithID:(N
例えばこんなクラスがあるとする。 Customer.h @interface Customer : NSManagedObject {} @property (nonatomic, retain) NSString * address1;@property (nonatomic, retain) NSString * postcode;@property (nonatomic, retain) NSString * lastname;@property (nonatomic, retain) NSString * address2;@property (nonatomic, retain) NSString * firstname;@property (nonatomic, retain) NSDate * birthdate;@property (
モデルの修正 CoreDataのマイグレーションを試してみた。通常モデルに修正を加えると、直前に作成したSQLiteDBは使えず実行時エラーが出る。この場合、SQLiteDBを一旦削除する必要がある。当然データの引き継ぎはできない。 エラーログ: [16769:a0f] Error Domain=NSCocoaErrorDomain Code=134100 UserInfo=0x116760 "The managed object model version used to open the persistent store is incompatible with the one that was used to create the persistent store."[16769:a0f] This NSPersistentStoreCoordinator has
CoreData でリレーションシップ(関連)を扱う必要が出てきたのでこれから調査していく。 ※今回 MacOSX10.5で検証。 まずはこんなモデルを作ってみた。 Xcodeでクラスを自動生成すると次のようなコードができる。なるほど対多関連は NSSet として実装されるのか。また tagsのアクセッサも自動的に用意されるようだ。これは便利。 BlogEntry.h
▼ 2010 (165) ► 6月 (13) ▼ 5月 (31) Objective-C カテゴリでプロパティ 今週のCocoa情報(5/30) - 今週気になった Cocoaプログラミング情報の紹介 CoreData - テーブルの件数を取得する(SQL確認) CoreData - SQLite の LIMIT CoreData - 検索見本(NSManagedObjectを条件に検索) CoreData - マイグレーション CoreData - Xcodeでモデルクラスを自動生成する CoreData - モデル見本 今週のCocoa情報(5/23) - 今週気になった Cocoaプログラミング情報の紹介 CoreData - リレーションシップ(6) 削除ルール「アクションなし」「無効にする」の比較 CoreData - リレーションシップ(5) マスター・ディティールとカスケード
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard (前回)Cocoaの日々: Safari用独自プラグインを作る(8) - コンテキストメニューにメニュー追加 前回の swizzleMethodForClass( ) の補足。 -(void)swizzleMethodForClass:(Class)cls orginalSelector:(SEL)org_sel alternativeSelector:(SEL)alt_sel { Method org_method = class_getInstanceMethod(cls, org_sel); class_addMethod(cls, alt_sel, class_getMethodImplementation([self class], alt_sel), method_
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard (前回)Cocoaの日々: Twitpicアップローダ開発(3) 開発中 2回目以降のアップロードに失敗する件について調査した。 現象は1回目のアップロード成功後、2回目が失敗する。失敗時のエラーは "1001 - Invalid twitter username or password" 1回目と2回目で同じ username/password を使っていることは確認済。 ネット上で情報を探した限りでは同様の問題については1件だけみつかった。 Twitpic not working, Posterous is... why? - Stack Overflow ただ解決していない様子。 さらに調査したところ、1回目の成功後,60秒すぎると2回目でも成功するようになることがわかっ
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard 正確には Nibから作成したインスタンスの開放。実行途中で Nibを読みこんだ後、不要になったタイミングでこれを破棄する場合の解放方法について調べてみた。 方針については Mac Dev Center にドキュメントがある。 Resource Programming Guide: Nib Files The Nib Objecvt Life Cycle - Nib Object Retention の所。 ここの説明によれば Top-Level Objects は Nibからインスタンスが作成された段階で retain count が1 となっており、破棄については利用側で責任を持て(すなわち開放しろ)ということになっている。 Top-Level Objects とは Inte
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard
asi-http-request ではフォームデータ送信用のクラス ASIFormDataRequest が用意されており、これを使うと multipart/form-data なリクエストも数行で送信することができる。使い方は How to use it の中の Sending data with POST or PUT requests に書かれている。 ASIHTTPRequest example code - All-Seeing Interactive ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:@"Ben" forKey:@"first_name"]; [request setPostValue:@"Copsey" forKey:@"
(前回)Cocoaの日々: Keychain Services 調査 (21) twitpic へ画像をアップロード(その1)調査 asi-http-request ライブラリを使うことにする。まずはサンプルプログラムへライブラリを組み込んで動作確認をやってみる。 組み込み方法はサポートページに図入りで詳しく書いてある。 How to use ASIHTTPRequest in your projects - All-Seeing Interactive まずライブラリのソースコードをダウンロードする。 Downloads for pokeb's asi-http-request - GitHub 今回は v1.6.1 の zip を落としてみた。解凍すると Xcodeのプロジェクト一式が入っている。
▼ 2010 (165) ► 6月 (13) ► 5月 (31) ► 4月 (30) ▼ 3月 (31) TBXML を試す CocoaでXML Keychain Services 調査 (23) twitpic へ画像をアップロード(その3)画... 今週のCocoa情報(3/28) - 今週気になった Cocoaプログラミング情報の紹介 Keychain Services 調査 (22) twitpic へ画像をアップロード(その2)a... Keychain Services 調査 (21) twitpic へ画像をアップロード(その1)調査 Keychain Services 調査 (20) 認証フロー(REST向け)Keychain it... Keychain Services 調査 (19) 認証フロー(REST向け)実装開始 Keychain Services 調査 (18
Should I always release self for failed init methods? - Stack Overflow initメソッド内でエラーが起きた時の対処。self を release して nil を返すのが良いとのこと。 - (id)init{ self = [super init]; if(self) { // do some init stuff if (somethingFailed) { [self release] self = nil; } } return self; }Mac Dev Center にその解説がある。 Handling Initialization Failure In general, if there is a problem during an initialization method, you should cal
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard 複数の NSManagedObjectContext Core Data では一つのDBに対して複数の NSManagedObjectContext を使うことができる。NSManagedObjectContext を複数使うケースとしては、例えば同じDBを扱う複数のビューを用意して編集途中の状況をお互いに影響与えないような使い方が考えられる。編集が確定した時だけ他のビューへその変更内容を反映する。 Optimistic Locking ただしこの場合、複数のビューで同時に編集が行われるとデータに不整合が生じる恐れがある。Core Data ではこのような不整合を防ぐ為に Optimistic Locking(楽観的ロック)を採用している。Optimistic Locking
MacOSXプログラミング。毎日更新。 話題: Cocoa, Objective-C, Snow Leopard 最初から保存やら同期やらすべてを実装すると大変なので、まずはメモリ上だけでクッキーのやりとりを行う実装から始めよう。当面はラフな実装で動作確認を先行して行い、徐々に精度を高めていくやり方で進める。 今回はクッキーの受け取り処理を実装する。 (1) クライアント側の用意 まず WebView の WebResourceLoadDelegate として AppController を指定し、必要なデリゲートメソッドを実装する。 リクエスト処理では、setHTTPShouldHandleCookies を使い、デフォルトの NSHTTPCookieStorage の使用を中止する。 AppController.m // WebResourceLoadDelegate - (NSURL
ADCサンプル (1) Application List (8) ASIHTTPRequest (3) binding (16) blocks (2) BlogAssistant (13) carbon (6) category (1) cocoa (504) Cookie (28) CopyAndPaste (2) Core Annimation (10) Core Image (19) coredata (38) Dashboard (3) debug (1) flash (8) FSEvent (3) GIMP (1) git (2) google (1) HUD (1) ImageKit (1) Keychain Service (25) KVC (1) Launch Services (8) Localization (1) Nib (1) NSApplication (1) N
▼ 2010 (165) ► 6月 (13) ► 5月 (31) ► 4月 (30) ► 3月 (31) ▼ 2月 (28) 今週のCocoa情報(2/28) - 今週気になった Cocoaプログラミング情報の紹介 Keychain Services 調査 (3) ドキュメントを読む #1 Keychain Services 調査 (2) サンプルコードを読む Keychain Services 調査 (1) 情報収集 SimpleCap - 改善提案 LaunchAppPlugin SimpleCap ローカライズ(French) 今週のCocoa情報(2/21) - 今週気になった Cocoaプログラミング情報の紹介 本 - Objective-C逆引きハンドブック SimpleCap ローカライズ(Italian)その2 SimpleCap ローカライズ(Italian) JLNDr
次のページ
このページを最初にブックマークしてみませんか?
『(旧) Cocoaの日々』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く