18. RealmのModel
// Define your models like regular Swift classes
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
}
// Use them like regular Swift objects
let mydog = Dog()
mydog.name = "Rex"
print("name of dog: (mydog.name)")
// Persist your data easily
let realm = try! Realm()
try! realm.write {
realm.add(mydog)
}
https://realm.io/docs/swift/latest/
19. RealmのSelect
let tanDogs = realm.objects(Dog).filter("color = 'tan'")
let tanDogsWithBNames = tanDogs.filter("name BEGINSWITH ‘B'")
※メソッドチェインでクエリを組み立てられる
https://realm.io/docs/swift/latest/#queries
20. よく使うクエリをclassメソッドで実装すると便利
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
dynamic var color = "white"
class func tanDogs() -> Results<Dog> {
let realm = try! Realm()
return realm.objects(Dog).filter("color =
'tan'")
}
}
Dog.tanDogs().sorted("age", ascending: false)
https://realm.io/docs/swift/latest/#queries
33. laravel側の実装
/**
* @property string $id // ID
* @property string $name // 名前
*/
class User extends Model {
function getImageURLAttribute() {
return sprintf('%s/images/%d.jpg',
Config::get('app.url'), $this->user_id);
}
function getThumbnailAttribute() {
$bin = file_get_contents(
$this->thumbnail_file_path);
return base64encode($bin);
}
}
https://realm.io/docs/swift/latest/#queries
34. 時差を考慮する
海外展開する場合等に困るので、
ISO8601で返すようにしてあげると安全
class User extends Model {
public function
getCreatedAtAttribute($date) {
return date('c', strtotime($date));
}
public function
getUpdatedAtAttribute($date) {
return date('c', strtotime($date));
}
}
https://realm.io/docs/swift/latest/#queries