LoginSignup
2
0

More than 5 years have passed since last update.

CocoaPodsでXcodeのRealm導入メモ(まだ記載途中です。)

Last updated at Posted at 2018-01-29

この記事の目的

山ほど参考サイトはありますが、自分の環境時にどのようにして導入したのかをメモします。
まだ記載途中です。

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

  1. Download
  2. Start Project
  3. Build to Mac

Alcatraz

  1. Quit Xcode
  2. 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
  1. Open Xcode
  2. Click LoadBundle

ただ、これをしてからXcodeの調子が悪い

Sample

サンプルはこれを参考
このままでは動かなかったので下記のように変更

  • dynamic var -> @objc dynamic var
  • objects(User) -> objects(User.self)
  • sorted("id") -> sorted(byKeyPath:"id")

文法参考
* Grammer
* Grammer2

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.
    }

}

サンプルファイル

掲載予定

Ref

Xcode9 で Alcatraz を入れる方法

Ref Official

Ref Qiita

Ref:Sample

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0