【问题标题】:convert String to AnyObject in swift快速将字符串转换为 AnyObject
【发布时间】:2015-06-19 15:25:20
【问题描述】:

我有一个静态字符串变量

struct numb {

    static var selectedNumber: String = String()

}

我正在尝试解开(同时将其转换为AnyObject)该值并将其分配给messageComposeViewController

 if let textMessageRecipients :AnyObject  =  numb.selectedNumber 
    {
     messageComposeVC.recipients = textMessageRecipients as? [AnyObject]
    messageComposeVC.body = "Testing 123!"
    }

编译器报错

bound value in a conditional binding must be of Optional type

如何将我的string 转换为AnyObject 并将其分配给消息视图控制器?

【问题讨论】:

    标签: swift casting


    【解决方案1】:

    根据您的示例和您看到的错误,您正试图解开一个非可选值。有值时不需要使用if let。您可以像这样使用if let 强制强制转换:

    if let myValue:AnyObject = numb.selectedNumber as? AnyObject
    

    这将产生一个警告,指出将String 转换为AnyObject 将始终成功,同样您不需要if let,您的转换将始终成功。

    您的最终示例应如下所示:

    messageComposeVC.recipients = [numb.selectedNumber] as [AnyObject]
    messageComposeVC.body = "Testing 123!"
    

    【讨论】:

      【解决方案2】:

      您需要像这样将selectedNumber 设为可选:

      struct numb {
      
          static var selectedNumber: String?
      
      }
      

      【讨论】:

      • 哦,我完全错过了谢谢!。但现在由于某种奇怪的原因,messageComposeVC.recipients 没有任何价值,即使当我执行 println 时 textMessageRecipients 中有一个字符串值。有什么线索吗?
      • 是的,因为您的 textMessageRecipients AnyObject 而不是 [AnyObject] 并且您将 textMessageRecipients 分配为? [AnyObject] 所以它会返回 nil。
      【解决方案3】:

      在 Swift 2.1、Xcode 7 中测试。有效!

      var myItems : String?
      
      myItems = ItemsTextfield.text
      
      myItems as! AnyObject
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-09
        • 1970-01-01
        • 2015-06-19
        • 2017-03-16
        • 2016-07-29
        • 1970-01-01
        相关资源
        最近更新 更多