Ios 安萨雷!当我使用NSString时,它与UInt8不同
我正在构建一个聊天应用程序,从服务器上获取json格式的所有消息。结果是:Ios 安萨雷!当我使用NSString时,它与UInt8不同,ios,swift,casting,nsarray,Ios,Swift,Casting,Nsarray,我正在构建一个聊天应用程序,从服务器上获取json格式的所有消息。结果是: {"success":"true","userid":"2","messages":[{"id":"1","senderid":"1","receiverid":"2","message":"Hey there!"},{"id":"2","senderid":"1","receiverid":"2","message":"How are you?"},{"id":"3","senderid":"1","receiveri
{"success":"true","userid":"2","messages":[{"id":"1","senderid":"1","receiverid":"2","message":"Hey there!"},{"id":"2","senderid":"1","receiverid":"2","message":"How are you?"},{"id":"3","senderid":"1","receiverid":"2","message":"Hey "},{"id":"4","senderid":"1","receiverid":"2","message":"Hey"},{"id":"5","senderid":"1","receiverid":"2","message":"Yo!"},{"id":"6","senderid":"1","receiverid":"2","message":"Yo!"},{"id":"7","senderid":"1","receiverid":"2","message":"asd"},{"id":"8","senderid":"2","receiverid":"1","message":"Leave me alone!"}]}
我正在尝试接收每个项目的消息
,并将其显示在tableview中
我的表视图有一个NSArray
,当前没有任何内容,但是当它调用getMessages()
方法时,我想用所有消息填充数组
这是我的密码:
var content: AnyObject! = jsonData.valueForKey("messages")
for message in content as [NSDictionary] {
if let m = message["message"] as? [NSString] {
listDataArray += m
}
}
但它抛出了一个错误:
'NSArray!' is not identical to 'UInt8'
在线:
listDataArray += m
有没有办法解决这个问题?您应该
将附加到数组中。+=
运算符用于从数组中添加元素集
listDataArray.append(m)
如果它是NSArray
使其成为NSMutableArray
//Change where listDataArray declared
var listDataArray:NSMutableArray = NSMutableArray()
//addthe objects
listDataArray.addObject(m)
要附加到listDataArray
的固定代码是:
if let m = message["message"] as? NSString {
listDataArray += [m]
}
错误在于message[“message”]
是字符串,而不是字符串数组
我不知道您是否尝试使用以下代码将字符串自动转换为包含该字符串的数组:
if let m = message["message"] as? [NSString] {
如果是,那就不行了
注意+=
运算符的用法,它将右侧数组的所有元素追加到左侧数组中-这就是为什么变量m
包含在数组中:[m]
原来您的listDataArray
是一个NSMutableArray
(不是吗?),在这种情况下,要添加到数组中的代码就是:
if let m = message["message"] as? NSString {
listDataArray.addObject(m)
}
它说,'NSArray'没有名为“append”的成员。
@JoshHarington您需要使其成为可变数组。请看编辑的答案。我以为我以前尝试过,但它不起作用。不管怎样,现在都可以了,谢谢!我仍然得到错误'NSArray!'与“UInt8”不同
我没有使用NSMutableArray
。当我将其更改为该值时,在展开可选项时会出现错误found nil
,但当我打印出来时,它会显示消息?很难理解-您应该在问题中发布所有相关代码,至少在listDataArray
声明的位置如果它不是swift数组,也不是NSMutableArray
,那是什么?我默认排除了。。。NSArray
是不可变的,因此不能添加元素。它必须是NSMutableArray
或swift数组