无法在Swift2中将AnyObject(可选)转换为String

时间:2015-08-21 11:23:24

标签: swift swift2 realm

我坚持这个代码!我想将AnyObject转换为String,最好的方法是什么?

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

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

有人能帮助我吗?

由于

迈克尔

3 个答案:

答案 0 :(得分:3)

以下是答案:

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

这不优雅但有效; - )

抱歉我还不能投票。但是当我获得15点声望时,我的投票将成为公开的

答案 1 :(得分:1)

你可以尝试

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

print(name) //Should print: Englisch

不知道这是否适合你。但我想它应该。

答案 2 :(得分:1)

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