2017-06-16 13 views
1

に各値を追加します。私はをループしたいループ配列を介して、私は私のクラスのように定義されたレルムデータベーススウィフト3

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

:私としても定義された2つの配列を有する

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

各値を私の領域のDevice.assetTagオブジェクトに追加し、2番目の配列をループして、各値をDevice.locationオブジェクトに追加します。

私は最初の配列からデータを追加するレルムのreadmeからのコードを使用してみましたが、それがループしていないようでした:そう最初にあなたasetTagsと別の場所を保持しているものを

let realmArray = Device(value: array) 

let realm = try! Realm() 


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

答えて

2

次の2つの配列を持っていますそれらからオブジェクトを構築する必要があります。あなた(おそらく、リファクタリングが必要)、次のような何かを行うことができます

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

申し訳ありませんあなたが+ = 1を追加する前に正確な答えが – kathayatnk

+0

に更新されました。私はどのように考えている。 – Martheli

関連する問題