为什么不将所有项追加到数组中?

时间:2015-11-19 07:52:44

标签: ios arrays swift struct

我在User.swift文件中有结构:

struct User {
    let name : String
    let image: UIImage
}

在我的控制器中,我做了:

for user in OneRoster.buddyList.fetchedObjects! {
    let userJID = OneRoster.userFromRosterForJID(jid: user.jidStr)
    var avatarImage: UIImage?

    let photoData = OneChat.sharedInstance.xmppvCardAvatarModule?.photoDataForJID(userJID?.jid)
    self.users = [User(name: user.displayName, image: UIImage(data: photoData!)!)
}

所以我运行一个循环,当我打印元素(用户)时,它会打印所有用户,但是当我尝试:

self.users = [User(name: user.displayName, image: UIImage(data: photoData!)!)

它向我的var users = [User]()添加了一个,最后一个用户并忽略了第一个用户。因此,当我打印print(users)时,它只打印最后一个用户。

我不明白为什么?我该如何修复它,所有用户都会附加到我的数组中?

2 个答案:

答案 0 :(得分:5)

使用

self.users.append(User(name: user.displayName, image: UIImage(data: photoData!)!)

而不是

self.users = [User(name: user.displayName, image: UIImage(data: photoData!)!)

答案 1 :(得分:0)

每次在循环内修改users数组,因此重写,更改此行:

self.users = [User(name: user.displayName, image: UIImage(data: photoData!)!)

on

self.users.append(User(name: user.displayName, image: UIImage(data: photoData!)!)

并将您的数组初始化到顶部,如果您没有:

self.users = [User]()