2017-07-30 111 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類屬性中設置該值。這有道理嗎? –