将NSArrays解压缩为String swift

时间:2017-07-30 22:39:49

标签: json swift firebase-realtime-database nsarray

我想将一组用户解包为一个字符串。

例如在我的应用程序中有群聊,每次用户进入群聊时,他们的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"
},

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

1 个答案:

答案 0 :(得分:0)

好像你在课堂上设置字典。首先,您需要从字典中提取值并将其设置为Room模型类属性。之后尝试在您的阵列上调用join方法,然后它应该可以工作。