簡體   English   中英

附加數組會覆蓋Realm對象的最后一個索引

[英]Array appending overwrites last index of Realm object

我有一個Realm對象數組,在將它們保存在Realm DB中之前,我在for循環中有自己的對象數組:

var objs = [self.friendsObject] //0 values at first
for i in (0..<json.count) { //counts 2

  let _id = json[i]["_id"] as? String
  let userName = json[i]["userName"] as? String
  let profile_pic = json[i]["profile_pic"] as? String
  let phone = json[i]["phone"] as? String

  self.friendsObject.id = _id!
  self.friendsObject.username = userName!
  self.friendsObject.profilepic = profile_pic!
  self.friendsObject.phone = phone!

  objs.append(self.friendsObject) //2nd element overwrites 1st one
  }
self.friendsObject.save(objects: objs)

因此,在插入第二個數組之前,我可以在objs看到具有正確項目的第一個對象,但是在第二個索引中,有2個具有相同值的對象數組。 我感謝任何幫助。

注意:它不是重復的,我已經檢查了一些類似的問題,但不適用於我的問題。

正如Vadian所評論的那樣,問題在於代碼不是在創建新的friendsObject實例,而是將相同的實例附加不同的值。

編輯

下面是一個如何根據問題中提供的信息將JSON復制到類的示例:

    // Simulating a JSON structure filled with some data.
    var jsonData = [Int: [String: String]]()

    for index in 0..<10 {
        var values = [String: String]()
        values["id"] = "id\(index)"
        values["username"] = "username\(index)"
        values["profilepic"] = "profilepic\(index)"
        values["phone"] = "phone\(index)"
        jsonData[index] = values
    }

    // Friend sample class where JSON data will be copied to.
    class Friend {

        var id: String
        var username: String
        var profilepic: String
        var phone: String

        init(_ id: String, _ username: String, _ profilepic: String, _ phone: String) {
            self.id = id
            self.username = username
            self.profilepic = profilepic
            self.phone = phone
        }
    }

    // The array where to copy the values from the JSON data.
    var friends = [Friend]()

    // Looping through the JSON data with a sorted key.
    for jsonSortedKey in jsonData.keys.sorted(by: <) {

        // Obtaining a JSON element containing friend data.
        let jsonFriend = jsonData[jsonSortedKey]!

        // Creating a new friend's instance from the JSON friend's data.
        let friend = Friend((jsonFriend["id"]!), jsonFriend["username"]!, (jsonFriend["profilepic"]!),  (jsonFriend["phone"]!))

        friends.append(friend)
    }

結果是這樣的:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM