Can';不能在Swift中填充空字典
我正在尝试为Sendbird iOS SDK构建一个颤振插件。出于某种原因,每当我试图获取数据时,当我知道事实并非如此(我分别创建了键和值)时,我就会从NSDictionary中获取null 最有可能的事实是,作为一个Swift的初学者,我做错了什么。这是我的代码:Can';不能在Swift中填充空字典,swift,dictionary,nsdictionary,sendbird,Swift,Dictionary,Nsdictionary,Sendbird,我正在尝试为Sendbird iOS SDK构建一个颤振插件。出于某种原因,每当我试图获取数据时,当我知道事实并非如此(我分别创建了键和值)时,我就会从NSDictionary中获取null 最有可能的事实是,作为一个Swift的初学者,我做错了什么。这是我的代码: let channelMetadata = NSMutableDictionary() // metadata is the NSDictionary<NSString *,NSObject *>
let channelMetadata = NSMutableDictionary()
// metadata is the NSDictionary<NSString *,NSObject *>
channel.getAllMetaData{ (metaData, error) in
guard let metadata = metaData, error == nil else {
// Error.
return
}
channelMetadata["status"] = metadata["status"]
channelMetadata["type"] = metadata["type"]
}
js["status"] = channelMetadata["status"]
返回null。我想这是因为我填充空字典的方式有问题,但我不知道是什么,即使搜索了几个小时。非常感谢您的帮助。
getAllMetaData
是异步的,闭包在最后一行之后执行。不要在Swift中使用NSMutable…
集合类型。@vadian感谢您的回复。您是否建议我使用[String:String]()
而不是NSMutableDictionary
。我的代码应该是这样的:channel.getAllMetaData(completionHandler:{(元数据,错误)在guard中…channelMetadata[“status”]=metaData[“status”]]channelMetadata[“type”]=metaData[“type”]]js[“status”]=channelMetadata[“status”]}
。抱歉,正如我所说,我是@vadian的完全新手。你的意思是我应该使用DispatchGroup()enter,leave
等吗?不,在getAllMetaData
之后的{}
范围内做你必须做的事情,谢谢@vadian。我想我应该重新措辞我的问题。我本质上想做的是等待元数据
有一个值,然后在闭包外使用该值,有点像异步等待
,因为代码段是更大函数的一部分getAllMetaData
是异步的,闭包在最后一行之后执行。不要在Swift中使用NSMutable…
集合类型。@vadian感谢您的回复。您是否建议我使用[String:String]()
而不是NSMutableDictionary
。我的代码应该是这样的:channel.getAllMetaData(completionHandler:{(元数据,错误)在guard中…channelMetadata[“status”]=metaData[“status”]]channelMetadata[“type”]=metaData[“type”]]js[“status”]=channelMetadata[“status”]}
。抱歉,正如我所说,我是@vadian的完全新手。你的意思是我应该使用DispatchGroup()enter,leave
等吗?不,在getAllMetaData
之后的{}
范围内做你必须做的事情,谢谢@vadian。我想我应该重新措辞我的问题。我真正想做的是等待元数据
有一个值,然后在闭包之外使用该值,有点像异步等待
,因为代码段是更大函数的一部分
js["status"]