Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 安萨雷!当我使用NSString时,它与UInt8不同_Ios_Swift_Casting_Nsarray - Fatal编程技术网

Ios 安萨雷!当我使用NSString时,它与UInt8不同

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

我正在构建一个聊天应用程序,从服务器上获取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","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数组