【问题标题】:Cant convert AnyObject(Optional) to String in Swift2无法在 Swift 2 中将 AnyObject(可选)转换为字符串
【发布时间】:2015-08-21 11:23:24
【问题描述】:

我被这个代码卡住了!我想将 AnyObject 转换为 String 最好的方法是什么?

在下面这个小 Code-sn-p 中,我尝试将 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

有人可以帮帮我吗?

谢谢

迈克尔

【问题讨论】:

    标签: swift swift2 realm


    【解决方案1】:

    答案如下:

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

    这并不优雅,但它有效;-)

    很抱歉我还不能投票。但是当我获得 15 点声望时,我的投票就会公开

    【讨论】:

      【解决方案2】:

      你可以试试

      let name = Object.valueForKey("name").stringValue!
      
      print(name) //Should print: Englisch
      

      不知道这是否适合您。但我想应该是的。

      【讨论】:

      • 抱歉,这不起作用。我收到错误:致命错误:在展开可选值时意外发现 nil。当我通过添加一个来修复这个错误时!在 ("name") 之后我得到与运行时错误相同的错误
      • 好吧,如果你只打印 Object.valueForKey("name")! 会得到什么?
      • 谢谢@iReadMe。我有一个类似的问题。但是有了你的评论。我拿了 let mess2 = json[index]["Messages"][1].string!只是让 mess2 = json[index]["Messages"][1] 而不是得到一个 nil 我得到 null 并且它解开了可选的!而且我的代码现在再也不会崩溃了。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        • 1970-01-01
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多