20150228 Realm超入門

Description
1. Realm超入門 2015.2.28 Cocoa勉強会関西 #60 @itok_twit 参加できなかったので 資料だけでも 2. 自己紹介 ã いとうけい(itok) ã…

Please download to get full document.

View again

of 13
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Software

Publish on:

Views: 2 | Pages: 13

Extension: PDF | Download: 0

Share
Transcript
  • 1. Realm超入門 2015.2.28 Cocoa勉強会関西 #60 @itok_twit 参加できなかったので 資料だけでも
  • 2. 自己紹介 • いとうけい(itok) • 公私共にプログラマ iOS / Mac(たまに Android) • Objective-C歴10年以上、Swift歴1ヶ月ほど • http://itok.jp/
  • 3. Realm超入門
  • 4. Realmとは • SQLiteやCore Dataの置き換えとして作られたモ バイルプラットフォーム用のデータベース • iOS / Mac / Android対応 • Apache Licence 2.0だがDBのコア部分はクロー ズド(公開を検討中) • 詳しくは→ http://realm.io/
  • 5. 特徴 • 記述が簡単:クラスを定義→データベースの構造 • クエリが速い • 省メモリ
  • 6. できること • 数値、文字列、日付、バイナリなど一通りの型に対応 • NSPredicate を使う • メモリ上に一時的なDBも作れる • スレッドセーフ! • JSONからの直接マッピング
  • 7. できないこと • カスケードルールがない • プロパティを限定してのクエリ発行がない • ObjectID的なものはない • KVO(Notificationを使ってね、とのこと) • 今後に期待
  • 8. 導入方法 • CocoaPodsに対応 • Carthageにも対応 • frameworkとしても配布中
  • 9. DEMO
  • 10. サンプル 今村 はじめ,imamura_hajime@example.com,男,44,神奈川県,14 藤島 恵美,fujishima_megumi@example.com,女,27, 城県,08 海野 淳子,umino_atsuko@example.com,女,32,熊本県,43 榎本 彩華,enomoto_ayaka@example.com,女,27,滋賀県,25 ・・・
  • 11. Core Dataの場合 lazy var managedObjectModel: NSManagedObjectModel = { let modelURL = NSBundle.mainBundle().URLForResource("RealmTest", withExtension: "momd")! return NSManagedObjectModel(contentsOfURL: modelURL)! }() lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("RealmTest.sqlite") var error: NSError? = nil var failureReason = "There was an error creating or loading the application's saved data." if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil { coordinator = nil // Report any error we got. let dict = NSMutableDictionary() dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" dict[NSLocalizedFailureReasonErrorKey] = failureReason dict[NSUnderlyingErrorKey] = error error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict) NSLog("Unresolved error (error), (error!.userInfo)") abort() } return coordinator }() lazy var managedObjectContext: NSManagedObjectContext? = { let coordinator = self.persistentStoreCoordinator if coordinator == nil { return nil } var managedObjectContext = NSManagedObjectContext() managedObjectContext.persistentStoreCoordinator = coordinator return managedObjectContext }() import Foundation import CoreData class CDPerson: NSManagedObject { @NSManaged var name: String @NSManaged var email: String @NSManaged var sex: String @NSManaged var age: NSNumber @NSManaged var data: NSData @NSManaged var prefecture: CDPrefecture } データモデル定義 クラス作成 モデル読み込み
  • 12. Realmの場合 class RLPerson: RLMObject { dynamic var name = "" dynamic var email = "" dynamic var sex = "" dynamic var age = 0 dynamic var data : NSData? dynamic var prefecture : RLPrefecture? } クラス定義のみ! let ret = RLPerson.objectsWhere("age > %d", 40).sortedResultsUsingProperty("age", ascending: true) すぐに使える!
  • 13. まとめ • Realmいいよ • 小規模なデータベースならどんどん使っていこう! • 公式日本語ドキュメントあります→ http:// realm.io/jp/docs/cocoa/0.90.5/ • 先日Realm Tech Talkが開催されました→ http:// togetter.com/li/787628
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks