SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
RealmとHimotoki
2015.8.26 関西モバイルアプリ研究会 #5
@itok_twit
@itok_twit
• いとうけい(itok)
• 公私共にプログラマ iOS / Mac(たまに Android や Windows)
• http://itok.jp/
Realm
SQLite / CoreData 置き換えデータベース
https://realm.io
Himotoki
最近話題のJSONマッパー
https://github.com/ikesyo/Himotoki
JSON→Himotoki→Realm
やってみた
{
"name": "groupA",
"persons": [
{
"name": "Francis Henry"
},
{
"name": "Williamson Sargent"
},
{
"name": "Vivian Henderson"
}
]
}
http://www.json-generator.com
サンプル
class Person : Object, Decodable {
dynamic var name: String = ""
dynamic var group: Group?
static func decode(e: Extractor) -> Person? {
return build(
e <| "name"
).map(Person.init)
}
init(_name: String) {
name = _name
super.init()
}
// Realm対応のために必要(Objectを継承しているので)
required init() {
super.init()
}
override init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
}
Person
class Group : Object, Decodable {
dynamic var name : String = ""
let persons = List<Person>() // ArrayじゃなくてList
static func decode(e: Extractor) -> Group? {
return build(
e <| "name",
e <|| "persons"
).map(Group.init)
}
init(_name: String, _persons: [Person]) {
name = _name
super.init()
// ここで関連付け
for person in _persons {
person.group = self
persons.append(person)
}
}
∼略∼
}
Group
guard let realm = try? Realm() else {
return
}
realm.write({ () -> Void in
if let group : Group = decode(json) {
realm.add(group)
}
})
let result = realm.objects(Person)
print(result.description)
実行
簡単!
複雑・巨大なJSONを
全部Realm化するのはちょっと・・・
JSONバイナリをRealmに格納
必要に応じてdecodeするのもあり
ところで
class MyObject : Object {
// didSetが使えないので2段階に構える
var jsonData : NSData {
set(newValue) {
jsonDataBacking = newValue // バイナリを格納
p_data = nil // JSONオブジェクトを初期化
}
get {
return jsonDataBacking
}
}
private dynamic var jsonDataBacking : NSData = NSData()
private var p_data : BigData?
// BigDataの取り出し口
var data : BigData? {
if p_data == nil { // バイナリから必要に応じて生成
if let json = try? NSJSONSerialization… {
p_data = decode(json)
}
}
return p_data
}
}
Realm + Himotoki
最高!

Más contenido relacionado

Similar a 20150826 RealmとHimotoki

Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
初めての Data api
初めての Data api初めての Data api
初めての Data apiYuji Takayama
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Mori Tetsuya
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting startedKyohei Morimoto
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesNoritada Shimizu
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power AutomateTomoyuki Obi
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すTomoki Hasegawa
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩ShinichiAoyagi
 
Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Paymentdynamis
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーションYoshifumi Kawai
 
Realmの暗号化とAndroid System
Realmの暗号化とAndroid SystemRealmの暗号化とAndroid System
Realmの暗号化とAndroid SystemKeiji Ariyama
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Yuki Hattori
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2Nobuhiro Nakajima
 
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけDaiki Mogmet Ito
 

Similar a 20150826 RealmとHimotoki (19)

Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power Automate
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩
 
Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Payment
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 
Realmの暗号化とAndroid System
Realmの暗号化とAndroid SystemRealmの暗号化とAndroid System
Realmの暗号化とAndroid System
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
 
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
 

Más de Kei Ito

20151130 Apple Pencilを使う
20151130 Apple Pencilを使う20151130 Apple Pencilを使う
20151130 Apple Pencilを使うKei Ito
 
20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲するKei Ito
 
20150930 3D Touchを試す
20150930 3D Touchを試す20150930 3D Touchを試す
20150930 3D Touchを試すKei Ito
 
20150228 Realm超入門
20150228 Realm超入門20150228 Realm超入門
20150228 Realm超入門Kei Ito
 
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたCocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたKei Ito
 
Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Kei Ito
 
AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)Kei Ito
 
Cocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてCocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてKei Ito
 

Más de Kei Ito (8)

20151130 Apple Pencilを使う
20151130 Apple Pencilを使う20151130 Apple Pencilを使う
20151130 Apple Pencilを使う
 
20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する
 
20150930 3D Touchを試す
20150930 3D Touchを試す20150930 3D Touchを試す
20150930 3D Touchを試す
 
20150228 Realm超入門
20150228 Realm超入門20150228 Realm超入門
20150228 Realm超入門
 
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたCocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
 
Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集
 
AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)
 
Cocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてCocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについて
 

20150826 RealmとHimotoki