利用检索到的对象属性来填充数组和后续标签的最佳方法是什么?

时间:2017-08-17 21:57:56

标签: arrays swift fetch

我有一个数据库(parse-server),我可以从中获取包含信息的对象。对象属性中的某些信息用于填充表视图上的标签。我填写的方式,比方说,userName和userLike标签如下:

使用对象属性附加不同的数组

var userName = [String]()
var userLikes = [String]()

func query(){
    let commentsQuery = PFQuery(className: "UserStuff")
    commentsQuery.findObjectsInBackground { (objectss, error) in
        if let objects = objectss{
            for object in objects{
                self.userName.append(object["userName"] as! String)
                self.userLikes.append(object["userLikes"] as! String)

            }
        }
    }
}

忽略这样一个事实:我没有.whereKey或任何else语句来处理其他情况......这只是为了说明这个问题。无论如何,在这种方法中,迭代userNameuserLikes数组来填充标签。 for object in objectss{}确保一个数组中的索引(无论是索引0,1,2,3等等)引用/来自与另一个数组的索引中的值相同的对象。但是,我想知道是否会更好地做到如下:

将整个对象附加到PFObject数组

var userObjects = [PFObject]()

func query(){
    let commentsQuery = PFQuery(className: "UserStuff")
    commentsQuery.findObjectsInBackground { (objectss, error) in
        if let objects = objectss{
            for object in objects{
                self.userName.append(object)
            }
        }
    }
}

使用这种方法,我可以用以下内容填充标签:

userNameLabel.text = String((userObjects[0])["userName"])

在此方法中,可以从同一个数组访问该对象的所有属性。我可以看到这可能有一些优势,但这是最终更好的方法吗?我应该立即切换吗?

1 个答案:

答案 0 :(得分:0)

我要说答案是两者中的后者可能是更好的方法。这是因为在前者中,来自特定对象的信息仅通过数组中的顺序在数组之间链接。涉及.append.remove的任何意外或错误编写脚本的函数都可能会使数组之间的顺序发生偏差,然后对象的名称可能是nameArray中的第3个索引,但它的喜欢可能会结束成为likesArray中的第4个索引,很难修改此问题。使用后一种方法,有关对象属性的所有信息都链接到数组中的对象本身,并避免此问题。