この記事の目的
山ほど参考サイトはありますが、自分の環境時にどのようにして導入したのかをメモします。
まだ記載途中です。
Premise
- Xcode 9.2
- Swift
- Realm
- CocoaPods 1.1.0以降(当方環境1.4.0)
-
pod --version
で確認可能
-
Caution
AlcatrazはXcode8のみ対応なので使ってはいけない
(RealmSwiftの導入記事には記載が多かったため導入してしまい動作不安定になりました)
Introduction
CocoaPods
add Realm.framework
and RealmSwift.framework
RealSwift
- Download
- Start Project
- Build to Mac
Alcatraz
- Quit Xcode
- input below code
curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
sudo gem install -n /usr/local/bin update_xcode_plugins
update_xcode_plugins
update_xcode_plugins --unsign
- Open Xcode
- Click LoadBundle
ただ、これをしてからXcodeの調子が悪い
Sample
サンプルはこれを参考
このままでは動かなかったので下記のように変更
- dynamic var -> @objc dynamic var
- objects(User) -> objects(User.self)
- sorted("id") -> sorted(byKeyPath:"id")
RealmTest.swift
import Foundation
import RealmSwift
class User: Object {
@objc dynamic var id = 0
@objc dynamic var name = ""
@objc dynamic var createdAt: Double = 0
}
ViewController.swift
import RealmSwift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Realmオブジェクト生成
let realm = try! Realm()
//作成
let tanaka = User()
tanaka.id = 1
tanaka.name = "田中"
tanaka.createdAt = NSDate().timeIntervalSince1970
try! realm.write {
realm.add(tanaka)
}
//作成
let yamada = User()
yamada.id = 2
yamada.name = "山田"
yamada.createdAt = NSDate().timeIntervalSince1970
try! realm.write {
realm.add(yamada)
}
//作成
let suzuki = User()
suzuki.id = 3
suzuki.name = "鈴木"
suzuki.createdAt = NSDate().timeIntervalSince1970
try! realm.write {
realm.add(suzuki)
}
//参照
let users = realm.objects(User.self).filter("id != 0").sorted(byKeyPath:"id")
for user in users {
print(user.name)
}
//更新
let hoge = realm.objects(User.self).last!
try! realm.write {
hoge.name = "ほげ"
}
//参照
for user in realm.objects(User.self).filter("id != 0").sorted(byKeyPath:"id") {
print(user.name)
}
//削除
let lastUser = realm.objects(User.self).last!
try! realm.write {
realm.delete(lastUser)
}
//参照
for user in realm.objects(User.self).filter("id != 0").sorted(byKeyPath:"id") {
print(user.name)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
サンプルファイル
掲載予定