普通にDBを使っていて、プライマリキーとかユニークキーとか当たり前に使うものだと思っていたけど、CoreDataを利用するにあたってはその概念が当てはまらない。とはいえ、SQLiteをラップしているので、裏側ではちゃんとプライマリキーとか持っているようだが、表だって使うことができないのだ。 でもいろいろなviewを行き来するのに、そのテーブル(エンティティ)内の一意のデータのキーを持ちまわるのが妥当と判断したため、どうしても PRIMARY KEY に AUTO INCREMENT を設定したカラムを使いたかったのだが、いろいろ調べた結果、直接、PRIMARY KEY も AUTO INCREMENT も使うことができないことが判った。(実は良い方法があるのかもしれないが、そこまでCoreDataを熟知していない。SQLiteを直接実行する方法もあるのかな?) で、もっと調べて、代わりに利
CoreDataを用いたデータ管理を行う方法を今日は書きたいと思います。 色々と書いていたら長くなったので、まずはCoreDataの準備について記載したいと思います。 CoreDataとは CoreDataとは、iPhoneアプリでデータを永続的に保存できる仕組みの一つです。データを扱う機能が豊富に そろっているようで、便利なフレームワークのようです。詳細は、以下を参照してみて下さい。 iOS Core Data チュートリアル この記事も含めて、以下のような分類でCoreDataの使い方をブログに書いています。 ご参考になれば幸いです(((o(*゚▽゚*)o))) - CoreDataを用いてデータ管理を行う方法。準備編。 - CoreDataを用いてデータ管理を行う方法。登録編!! - CoreDataを用いてデータ管理を行う方法。更新・削除編!!! - CoreDataを用いてデータ
処理が終わったら(サンプルでは2秒間のウェイトが入れてある) contentInsets.top = -60 へ戻してやる。すると最初のヘッダが隠れた表示に戻る。なお contentInsets も UIViewアニメーションの対象なので +[UIView animateWithDuration:aniamations:] を使うとヘッダが隠れるまでがアニメーションになる(逆に使わないと一瞬で切り替わり、やや不自然になる)。 コードではヘッダの表示制御用にメソッドを用意してある。こんな感じ。 - (void)_setHeaderViewHidden:(BOOL)hidden animated:(BOOL)animated { CGFloat topOffset = 0.0; if (hidden) { topOffset = -self.headerView.frame.size.heig
UITableViewCell の accessoryView というプロパティについてです。それほどマイナーなプロパティでもないので、実は当たり前なのかもしれませんが、最近便利さに気付いたので紹介します。 UITableViewCell には accessoryType というプロパティがあって、3種類のアクセサリが付けられます。 accessoryView は、これをカスタムな見た目にしたい時に使うぐらいのものだという認識でした。実際そうなのですが、よく考えたら UIView ならなんでも入れられるわけで、UISwitch だって入れられるんだなと。設定画面でスイッチがよく出てくるのですが、今まで contentView に addSubview していて、位置を合わせるのが面倒だと思っていました。でも accessoryView なら次のコードで終わりです。frame の origi
statuses を複数のメソッドからアクセスできるようにする まず、TwitterのAPIから取得したデータを格納するための statuses をインスタンス変数にして、複数のメソッドからアクセスできるようにします。 インスタンス変数とは インスタンス変数は、クラスの複数のメソッドからアクセスできます。これに対してローカル変数は、1つのメソッドからしかアクセスできません。 インスタンス変数を作るには、.hファイルで宣言を行う必要があります。 TimelineViewController.h ファイルを開いて、statuses の宣言を追加します。 @interface TimelineViewController : UITableViewController { NSArray *statuses; } これで statuses に複数のメソッドからアクセスできるようになりました。 取
毎日、プログラムと格闘しているラクイシ(@rakuishi07)です。 さて、UITableView の Cell に、ネットから取得した画像を表示したい場合(上図)、次のようなコードになると思います(ARC で書いています)。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc]
4 - Twitter Frameworkの利用 iOS5になってから、iOS上で簡単にTwitterのAPIを利用することができるようになりました。 OAuth認証をしなくていいので、とても便利です。 そこで今回はこのTwitterFrameworkを利用して自分のタイムラインを取得したり、投稿してみたりします。 準備しておくもの:Twitterのアカウント 今回の流れ プロジェクトの準備 タイムラインの取得 タイムラインをUITableViewに表示 Twitterへ投稿 です。 ちなみに次回は、この辺をこまごまと改良して、よりそれっぽいクライアントを作っていく予定です。 プロジェクトの準備 それではまず、プロジェクトの準備です。 いつも通り、NewProjectから進み、今回はMaster-Detail Applicationをテンプレートとして選択します。 Device Famil
興味の赴くままに勉強してたら、読み書きできる言語は9個になりました。他にもいくつか気になる言語があったりなかったり? まだまだ続く、楽しいお仕事わーくワク♪ « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 » 2010.10.05 (Tue) Twitterでのやり取りで@5mingame2さんにとてつもなく大事なことを教わったので、ここにメモとして記しておきます。感謝!感謝!です。 ※文章は意味を変更せず、言い回しだけ記事として理解しやすいように書き直しています。変な書き方があったら私のせいです。ごめんなさい。 「Objective-cの「参照カウンタ」という仕組みについて理解しておくとよりよいですよ。」 そんな言葉から始まりました。 ■概要説明 表示中のUIVi
Xcode3 では何気なくできた Instruments による iPhone アプリのメモリーリークの検出ですけど、iOS 5 beta 5 の Xcode4 で作成したプロジェクトでそれをやろうとしてみたところ、何故だかなかなか上手く行きませんでした。 そこで、Xcode4 を用いてメモリーリークを検出する方法について説明したいと思います。 実行時にメモリーリークを確認できる Instruments というツールは、アプリを実行するときに、アップルメニューの【Product】から【Profile】を選択することで、起動させることができるようになっています。 このように Instruments を使ってアプリを実行するだけで、メモリーリークを検出できるようになっていると思います。 ただ、自分で試した限りでは、このようにすると malloc 等によるメモリーリークは随時検出されるものの、O
iPhone, iPod touchアプリ開発するときにApple Developer Centerからサンプルをダウンロードして参考にしながら開発しているけど、どのサンプルがどんな感じか忘れてしまうのでメモ。一覧でまとめたサイトはないものか・・・。 実際に動かしたものと(個人的に)参考になりそうなものだけ。順不同 UICatalog UIコンポーネントの一覧。 AppPrefs インフォメーション、設定画面への切り替え方 CoreDataBooks Core Dataを使ったアドレス帳。新規登録、削除、編集など基本的なことが分かる QuickContacts 上のCoreDataBooksを進化させてアドレス帳として完成度を高めた感じ。起動直後のメニューはplistファイルを使っている。 SimpleDrillDown ナビゲーションの使い方。データ部分がちゃんとクラスに別れている。 D
UITableViewなどのスクロール系のViewでサムネイル画像を出す場合、下記のような記述ではメインスレッドで画像がロードされるため、ユーザーのUI操作に影響が出てしまいます。 NSURL *url = [NSURL URLWithString:@"URL"]; NSData *data = [NSData dataWithContentsOfURL:url]; [instanceOfUIImageView setImage:[[UIImage alloc] initWithData:data]]; こういう場合は非同期通信を行うのが定石だと思いますが、参考になるサンプルがあまり無かったので試しに作ってみました。UIImageViewを継承したUIAsyncImageViewクラスです。 UIAsyncImageView.h 画像URLの指定と、通信中止用のメソッドのみ定義しています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く