【问题标题】:Why not all items append into array?为什么不是所有项目都附加到数组中?
【发布时间】:2015-11-19 07:52:43
【问题描述】:

我在 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) 时,它只打印最后一个用户。

我不明白为什么?我该如何解决它,所有用户都将追加到我的数组中?

【问题讨论】:

  • self.users = [....] assigns 一个数组给 users 属性,那么你期待什么呢?您没有在代码中的任何位置追加到数组。
  • 因为你没有追加项目。
  • 我投票决定将此问题作为离题结束,因为通过查看自己的代码可以轻松回答。
  • 顺便说一句。这不可能是您的真实代码,因为self.users = [ ... 行中没有右方括号。
  • 这个问题是有效的。他可能对 swift 数组语法感到困惑。他解释了他的问题并得到了有效的答案。无需关闭任何东西

标签: ios arrays swift struct


【解决方案1】:

使用

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

代替

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

【讨论】:

    【解决方案2】:

    你每次在循环内修改你的users数组,所以它被重写,改变这一行:

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

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

    如果没有,请将初始化数组添加到顶部:

    self.users = [User]()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多