2017-06-16 43 views
1

我有类定义为:遍历阵列,并且每个值添加到域数据库夫特3

class Device: Object { 
     dynamic public var assetTag = "" 
     dynamic var location = "" 
    } 

我还两个数组定义为:

let array = ["12", "42", "52", "876"] 
let array2 = ["SC", "EDS", "DS", "EF"] 

我想循环通过第一个数组,并将每个值添加到我的领域Device.assetTag对象,并通过我的第二个数组循环,并将每个值添加到Device.location对象。

我试图使用从境界自述文件中的代码,刚刚从第一个数组中添加数据,但它似乎没有循环:

let realmArray = Device(value: array) 

let realm = try! Realm() 


     try! realm.write { 
      realm.add(realmArray) 
     } 

回答

2

你有两个数组一个所以先持有asetTags和另一个位置,您必须从这些构建对象。你可以这样做以下(可能需要重构)

class Device: Object { 
    dynamic public var assetTag = "" 
    dynamic var location = "" 
} 

class Test { 

    let assetTags = ["12", "42", "52", "876"] 
    let locations = ["SC", "EDS", "DS", "EF"] 


    func saveDevice() { 
     let realm = try! Realm() 
     try! realm.write { 
     let allDevices = getDeviceArray() 
     for device in allDevices { 
      realm.add(device) 
     } 
    } 
    } 

func getDeviceArray() -> [Device] { 
    let requiredDevices = [Device]() 
    var index = 0 
    for tag in assetTags { 
     let locationForTag = locations[index] 
     let device = Device() 
     device.assetTag = tag 
     device.location = locationForTag 
     requiredDevices.append(device) 
     index += 1 
    } 
    return requiredDevices 
    } 

} 

记得把循环realm.write内进行批量操作,这保证写只进行一次的连接。

+0

我明白你所说的大部分内容,但'let locationForTag = location [index]'如何循环遍历所有的位置?如果'index'被定义为0,那么只会从数组中拉出第一个值? – Martheli

+0

抱歉。更新了答案 – kathayatnk

+0

你的答案在添加+ = 1之前工作完全一样。我不知道如何。 – Martheli