2017-07-30 115 views
0

我想将一个用户数组解压缩为一个字符串。将NSArrays解压缩为字符串swift

例如在我的应用程序中有群聊,每次用户进入群聊时,他们的用户名都被添加到成员列表中。我想以应用程序中的字符串的形式返回单个群聊中的所有成员。如下面的数据对象

class Room: NSObject { 

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

} 

下面是其中I从数据库检索每个房间

每个房间都在代码表示。

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" 
}, 

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

回答

0

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

+0

是否可以在下载值后向字典添加值。我知道,通常如果他们不匹配的应用程序将崩溃。 – Stefan

+0

因此,从字典中您可以访问其密钥的值。因此,在Model类属性中设置该值。这有道理吗? –