Core Data

1,558 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,558
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Core Data

    1. 1. CoreData 2012/05/31 Kosuke Matsuda
    2. 2. iOSでSQLiteを利用する• libsqlite3 (C library)• Objective-C wrapper (FMDB)• O/RM (ActiveRecord, MojoDatabase)• CoreData• CoreData + 3rd library (MagicalRecord)
    3. 3. CoreDataとは• Core Data はモデルオブジェクトを永続 化するためのフレームワークです。 サルでもわかる Core Data 入門【概念編】(http://d.hatena.ne.jp/glass-_-onion/20111015/1318667971)• Core Dataはメモリ上のオブジェクトグ ラフを操作するためのもの Core Dataと(R)DBMSとは何が違うか?(http://macisv.jp/blog/?p=264)
    4. 4. CoreDataで利用する 主なクラス
    5. 5. • NSPersistentStore 永続ストア、データの保存先(主にSQLite、MacだとXMLとかも)• NSPersistentStoreCoordinator NSPersistentStoreを管理• NSManagedObjectContext データの検索や登録を管理する• NSManagedObjectModel 全エンティティ同士の関連を管理する
    6. 6. • NSManagedObject Modelオブジェクト。データ(レコード)• NSEntityDescription 各エンティティの定義を管理する(テーブル)• NSFetchRequest 検索条件を管理する
    7. 7. 実際に利用するのは主に以下の4つ• NSManagedObjectContext• NSManagedObject• NSEntityDescription• NSFetchRequest
    8. 8. CoreDataを実際に使う
    9. 9. • プロジェクトの作成プロジェクトを作る時に Use Core Data を選択する。
    10. 10. AppDelegate.{h,m}ファイルに自動生成されるコードをそのまま利用する。もし、既存プロジェクトであとからCoreDataを適用する場合、自分でこのコードを書くのは難しいのでダミープロジェクトを作ってからコードをコピペした方がよい。
    11. 11. • モデルクラスの作成
    12. 12. モデルクラスにattributeの設定
    13. 13. エンティティの設定
    14. 14. データの作成
    15. 15. データの検索
    16. 16. NSFetchedResultsController
    17. 17. • CoreDataから取得した結果セットを管 理する。• 主にUITableViewまたは UITableViewControllerと組み合わせて利 用する。
    18. 18. まだほとんど試していないので省略
    19. 19. Pros & Cons
    20. 20. Pros• スキーマ定義などをGUIで行える• 永続データへの効率的なアクセス• データストアのバージョン管理。自動 マイグレート• モデルオブジェクトの変更管理。アン ドゥとリドゥのサポート
    21. 21. Cons• 規約、ルールが多い テーブル名やカラム名に"Z"がつく。メタデータテーブルやカラム に"Z_"がつく• マイグレートにかなり時間がかかる(らし い)
    22. 22. • 検索条件にNSPredicateオブジェクトを使用す るので、SQL文に慣れていると把握しづらい ただしNSArrayなどでも利用されるので使い方を知っておいても損は ない• NSFetchedResultsController1つに対して1つの エンティティにしか対応していない
    23. 23. 補足:MagicalRecord• MagicalRecord was inspired by the ease of Ruby on Rails Active Record fetching. https://github.com/magicalpanda/MagicalRecord
    24. 24. 不要

    ×