【问题标题】:Unpacking NSArrays into String swift将 NSArray 快速解包为字符串
【发布时间】:2017-07-30 22:39:49
【问题描述】:

我想将一组用户解压成一个字符串。

例如,在我的应用中有群聊,每次用户进入群聊时,他们的 uid 都会添加到成员列表中。我想在应用程序中将单个群聊中的所有成员作为字符串返回。

每个房间在代码中表示为以下数据对象

class Room: NSObject {

    var owner: String?
    var groupChatName: String?
    var groupChatDescription: String?
    var members: [NSArray]?

}

下面是我从数据库中检索每个房间的地方。

func fetchAllRooms(){
    Database.database().reference().child("rooms").observe(.childAdded, with: {(snapshot) in

        if let dictionary = snapshot.value as? [String: AnyObject] {
            let room = Room()
            room.setValuesForKeys(dictionary)

            self.rooms.append(room)
            print(snapshot)

            print(room.members?.joined())
            print(self.rooms.count)

            DispatchQueue.main.async(execute: {
                self.collectionView?.reloadData()
            })
        }

        print("end of snap")

    }, withCancel: nil)
}

print(room.members?.joined()) 是当前导致应用程序崩溃并抛出 'NSInvalidArgumentException' 的原因,原因:

'-[__NSDictionaryI objectAtIndex:]: 无法识别的选择器发送到实例 0x60800146ab80'

我意识到这可能是我的数据的结构方式,所以这里看一下 json

"A632CA68-40D9-4F3A-B8C8-245457057443" : {
  "groupChatDescription" : "Test Description",
  "groupChatName" : "Test Name",
  "members" : {
    "WuqCAt4mM3h0P0X1m7hVZ7NQyLC2" : {
      "username" : "Steve"
    }
  },
  "owner" : "Steve"
},

非常感谢任何答案、建议和/或参考。

【问题讨论】:

    标签: json swift firebase-realtime-database nsarray


    【解决方案1】:

    好像你正在为你的班级设置字典。因此,首先您需要从字典中提取值并将其设置为您的 Room 模型类属性。之后尝试在您的数组上调用连接方法,然后它应该可以工作。

    【讨论】:

    • 是否可以在下载值后将值添加到字典中。我知道通常如果它们不匹配,应用程序就会崩溃。
    • 因此,您可以从字典中访问其键中的值。因此,在您的 Model 类属性中设置该值。这有意义吗?
    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 2019-10-11
    • 2018-10-16
    • 2023-02-22
    • 2023-03-29
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多