RealmSwiftのListでArrayする方法

環境

  • Swift3.0
  • Realm Swift
  • Xcode8

説明

RealmSwiftをArrayみたいに使うには、Listを使えばいいです。戦士というオブジェクトと武器というオブジェクトを作って、戦士に武器を持たせるプログラムを作ってみます。最後にprintで出力して、戦士がたくさんの武器を保有できていれば成功です

実装

DBの構造

realmData.swift
import Foundation
import RealmSwift

// 武器オブジェクト
class Weapon: Object {

    dynamic var name = ""
}

// 戦士オブジェクト
class Warrior: Object {
    //戦士が持っている武器一覧
    let Weapons = List<Weapon>()
}

データを保存して出力

ViewController.swift
import UIKit
import RealmSwift

var iAmWarrior = Warrior()
var array = Array(iAmWarrior.Weapons)

class ViewController: UIViewController {

override func viewDidLoad() {
        super.viewDidLoad()


        //武器オブジェクトをインスタンス化
        //三つの武器を追加
        let Weapon1 = Weapon()
        Weapon1.name = "鉄砲"

        let Weapon2 = Weapon()
        Weapon2.name = "斧"

        let Weapon3 = Weapon()
        Weapon3.name = "剣"
        iAmWarrior.Weapons.append(objectsIn: [Weapon1, Weapon2, Weapon3])

        print("1回目の武器獲得")
        array = Array(iAmWarrior.Weapons)
        print( array )
/*
[Weapon {
    name = 鉄砲;
}, Weapon {
    name = 斧;
}, Weapon {
    name = 剣;
}]
*/

        let Weapon4 = Weapon()
        Weapon4.name = "メリケン"
        iAmWarrior.Weapons.append(objectsIn: [Weapon4])


        print("2回目の武器獲得")
        array = Array(iAmWarrior.Weapons)
        print( array )
/*
[Weapon {
    name = 鉄砲;
}, Weapon {
    name = 斧;
}, Weapon {
    name = 剣;
}, Weapon {
    name = メリケン;
}]
*/

    }
}