无法在 Swift 2 中将 AnyObject(可选)转换为字符串

Cant convert AnyObject(Optional) to String in Swift2

我卡在这段代码上了!我想将 AnyObject 转换为 String 最好的方法是什么?

在下面这个小代码片段中,我尝试将 Realm 查询的结果转换为字符串。但最后我无法删除可选。看看:

print(Object)
// Print:

//Results<Subject> (
//    [0] Subject {
//        id = 10;
//        name = Englisch;
//        short = Eng;
//        mainSubject = 1;
//}

let name = Object.valueForKey("name")

print(name)
// Print:

//Optional((
//    Englisch
//))

let newname = name as! String
// Here I try to convert the AnyObject from above to a Swift-String but this don't work!
// Error: Could not cast value of type '__NSArrayM' (0x7fff7db48c18) to 'NSString' (0x7fff7e4ed268).

print(newname)
// Will never be executed

有人可以帮我吗?

谢谢

迈克尔

你可以试试

let name = Object.valueForKey("name").stringValue!

print(name) //Should print: Englisch

不知道这是否适合您。但我猜应该是这样。

您的问题是名称 属性 的类型为 NSMutableArray(错误消息中的 __NSArrayM),因此您应该将其转换为 [String].

答案如下:

let name = Object.valueForKey("name") as! [String]
let newName = name.first!
print(newName)

这不是很优雅,但很管用 ;-)

抱歉,我还不能投票。但是当我获得 15 个声望时,我的投票将变为 public