AnyObject不能转换为'String'

时间:2015-01-12 21:40:11

标签: ios swift casting compiler-errors

我收到以下错误AnyObject'无法转换为'String'。我在第if (answerArray != NSNull() && answerArray != nil)

上收到此错误

我尝试将其转换为String,但它没有解决问题。我在下面发布了整个代码。

 let answerArray : AnyObject = jsonparser.objectWithString(answer)
 if (answerArray != NSNull()  && answerArray != nil) {

}

2 个答案:

答案 0 :(得分:1)

我的理解是jsonparser.objectWithString(answer)应该返回一个数组,基于它所分配的变量的名称。

如果是异构类型的数组,您可以尝试转换为NSArray

if let answerArray = jsonparser.objectWithString(answer) as? NSArray {
    ...
}

如果数组应该包含相同类型的对象(让我们说Int),那么你可以尝试转换为快速数组:

if let answerArray = jsonparser.objectWithString(answer) as? [Int] {
    ...
}

请注意,非可选变量可以从不nil - 并且您已将answerArray声明为非可选项。

如果您想查看NSNull,建议您阅读this question及相关答案。

答案 1 :(得分:0)

我的猜测是错误是answerArray != nil - Swift是愚蠢的,因为它返回的错误是“不能转换为String”。更有用的是answerArray不是可选的。

这就是你的问题 - 你有let answerArray : AnyObject... - 而AnyObject不是Optional。在Swift中,'answerArray'绝不是'nil',因为只有Optional类型可以是nil

在不查看jsonparser.objectWithString的作用的情况下,我很难纠正您的代码,但实质上,编译器告诉您正在检查nil的非可选类型 - 这是不正确的。