我在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)
时,它只打印最后一个用户。
我不明白为什么?我该如何修复它,所有用户都会附加到我的数组中?
答案 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]()