タグ

CoreDataに関するMuneOchiのブックマーク (10)

  • Cocoaの日々: [iOS][Mac] CoreData - マイグレーション[1] NSEntityMigrationPolicy を使う

    iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど 以前、CoreData のマイグレーションについて調べたことがある。 (旧) Cocoaの日々: CoreData - マイグレーション これはマッピングモデルを定義するだけで簡単にできる、いわゆる「自動マイグレーション」を解説していた。 今回は NSEntityMigrationPolicy を使ったいわゆる「手動マイグレーション」について調べた。 マイグレーションの概要 Core Data ではエンティティ(テーブル)の定義を変更すると必ずマイグレーションを行う必要がある。例えば現在のアプリケーションをバージョンアップする際に属性 email2 を一つ追加する場合、マイグレーション設定を行わないと Core Data 利用時に例外が発生してアプリケーションが落ちてしまう。 (例)

    Cocoaの日々: [iOS][Mac] CoreData - マイグレーション[1] NSEntityMigrationPolicy を使う
    MuneOchi
    MuneOchi 2013/06/03
    手動マイグレーション
  • CoreData - マイグレーション

    モデルの修正 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 - マイグレーション
    MuneOchi
    MuneOchi 2013/06/03
    自動マイグレーション
  • リリース済みのiPhone/iPadアプリのDBの変更の仕方 或いはCoreDataを使ってスキーマの自動マイグレーション - プログラマでありたい

    リリース済みのiPhone/iPadアプリのDBのテーブル定義を変更したい。こんなことって、ありますよね?しかし、サーバサイドのアプリと違って、クライアントサイドで動くiPhone/iPadアプリはどうやってデータの移行をすれば良いのでしょうか?リリース後に気がついて、私は小一時間途方にくれました。 でも、iPhoneなら出来るんです。簡単に!! 正確に言うとApple謹製のDBのフレームワーク、CoreDataを使っていた場合は簡単に移行(マイグレーション)が実現出来ます。 詳しい情報は、次のリンクをご参照ください。 Core Data Model Versioning and Data Migration Lightweight Migration 簡単な手順としては、次のような形になります。 新しいバージョンのモデルを追加する。 Editor -> Add Model Version

    リリース済みのiPhone/iPadアプリのDBの変更の仕方 或いはCoreDataを使ってスキーマの自動マイグレーション - プログラマでありたい
    MuneOchi
    MuneOchi 2013/05/16
    CoreData Migration
  • CoreData の NSManagedObject のサブクラスを変更する場合はカテゴリを使うと便利 - 24/7 twenty-four seven

    CoreDataのモデルクラスはXcodeのモデルエディタから自動生成しますが、生成されたクラスにメソッドを追加したりしたいことがあると思います。 そのとき、自動生成されたファイルを直接変更してしまうと、モデルに変更がありモデルクラスを再生成したときにその変更が上書きされてしまいます。 そこで、カテゴリを使って追加部分は別のファイルに分けておくと、モデルクラスを再生成しても後から追加した部分は上書きされずに残るのでそのまま使えます。 例えば下記のようなクラス (Event.h) があるとして、条件でフェッチするメソッドや、日付をフォーマットして返すメソッドを Event+CoreData.h/m や Event+Formatter.h/m として別ファイルに定義します。 // Event.h #import <Foundation/Foundation.h> #import <CoreDa

    CoreData の NSManagedObject のサブクラスを変更する場合はカテゴリを使うと便利 - 24/7 twenty-four seven
    MuneOchi
    MuneOchi 2013/04/16
    NSManagedObject のサブクラスのメソッド追加
  • [XCODE] CoreDataにおいてテーブル定義変更を行う方法 - YoheiM .NET

    今日は、iPhone開発ネタのうち、CoreDataのお話です。 CoreDataを用いたデータの永続化は、多くのアプリで行われていると思います。 しかし、一度テーブル定義を行ってから、その後テーブル定義変更を行い、その後アプリを 実行するとエラーが。そのエラーを発生させず、定義変更後にデータを移行する方法を 今日は書きたいと思います。 CoreDataのデータ移行(マイグレーション)の必要性 私がリリースしているiPhoneアプリの中に、出費管理を行う Pocket.Money.Managementがあります。 このアプリでは、出費情報(日付、内容、金額)をCoreDataを用いて保存して、参照するアプリです。 既にリリースしているのですが、このたびテーブルを一つ追加したいと思いました。 その際に、既に定義済みの定義ファイルを変更すると以下のようなエラーが発生します。 2012-05-0

    [XCODE] CoreDataにおいてテーブル定義変更を行う方法 - YoheiM .NET
    MuneOchi
    MuneOchi 2013/04/14
    マイグレーション
  • CoreData - Object ID(その1)NSManagedObjectID

    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 -

    MuneOchi
    MuneOchi 2013/04/13
    オブジェクトを一意に識別
  • Cocoaの日々: CoreData - マイグレーションを考慮した CoreDataManager パターン

    CoreData を使うアプリであればこの程度の件数はすぐに行くので、起動時にマイグレーションが走ると確実に落ちてしまう。これを防ぐためには起動時に CoreData へアクセスさせないのが最低限の対策になるが、その場合でもユーザが CoreData へアクセスする操作を行った瞬間にマイグレーション処理に時間がかかって画面が固まったようになるのでユーザビリティは良くない。 マイグレーションを考慮したパターン よって CoreDataを使うアプリではマイグレーション用の画面を用意するのがベスト。処理フローはこんな感じ。 起動 ↓ (1)マイグレーションチェック もし必要なら、マイグレーション用の画面へ遷移し、(2)マイグレーション実行 ↓ 通常画面マイグレーションチェックは NSPersistentCoordinator を使えばわかる。 Cocoaの日々: [iOS][Mac] CoreD

    Cocoaの日々: CoreData - マイグレーションを考慮した CoreDataManager パターン
    MuneOchi
    MuneOchi 2012/10/25
    CoreData Migration
  • View-based Application で CoreData を使えるようしたい

    新規プロジェクト作成のテンプレートでView-based Applicationを選択してプロジェクトを作成する。Core Dataを使いたいがどうすればいいのか。 Navigation-based Applicationテンプレートを選ぶ場合はCore Dataを使うかどうか選択できるようになってるけど、View-basedではチェックボックスが出てこない。 それならば自分で実装しようということになるのだけれど、うーんうーんって感じになる場合が多いと思うの。 なので手順を書いておく。 Xcode 3.2.4 and iOS SDK 4.1 で試してる。 古いバージョンとか新しいバージョンのこと考えてない。 新規プロジェクトをView-based Applicationを選択して名前をMyCDataとして作成してます。 僕がやったポイント。 CoreData.frameworkを追加 Da

  • 時計仕掛けのiPhoneアプリ(6) – CoreDataを使ってみる | アルゴニートブログ

    練習で作っている時計アプリも、そろそろ形になってきました。 前回は NSUserDefaults を使い、アプリケーションの設定を保存しました。 しかし、この方法ではデータの検索をしたり、データの相互関係(リレーション)を実現するには、少し力不足… でも、そこは大丈夫。iPhoneはさすがスマートフォンと言うだけあって、標準でSQLiteを使う事ができちゃうんです!!(Androidもそうらしいですよ) しかも、普段SQLを使っていない人でもある程度扱えるよう、ORマッパー的な機能が用意されています。 Appleはこれらの、バックエンドのストレージ、それらを操作するコンテキスト、データ構造を扱うモデルを、CoreData(wikipedia)というフレームワークに纏めて提供しています。 今日はこれを扱っていこうと思います。 Core Dataコトハジメ Core Dataの手っ取り早いサン

  • iPhone アプリ研究会 CoreData について (1)

    iPhone/iPad(iOS)アプリの開発情報の発信を行っていきます。 presented by NEXT-SYSTEM iOS Developers Tasaki です。 前回お話ししたように、これから数回にかけて CoreData フレームワークの簡単な使い方をご紹介したいと思います。 まず初めに、CoreData フレームワークを使うことで何ができるのか、という点についてですが、プログラム内部のデータと同じような操作でデータベースとやり取りができます。 要は、SQL文をコードに書き込まずに済むようになります。 他にも利点はあるみたいですけど、ひとまずこの点に着目して、SQL文を書かずにデータベースを扱うところまでを目指したいと思います。 そのためには、以下のような準備が必要となってきます。 ・管理オブジェクトモデルの作成 ・永続ストアコーディネータの作成 ・管理オブジェクトコンテキ

    MuneOchi
    MuneOchi 2011/03/08
    #iphonedev
  • 1