在Swift中将String转换为AnyObject

时间:2015-06-19 15:25:21

标签: swift casting

我有一个静态字符串变量

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并将其分配给消息视图控制器?

3 个答案:

答案 0 :(得分:1)

您需要将selectedNumber设为可选,如下所示:

struct numb {

    static var selectedNumber: String?

}

答案 1 :(得分: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 :(得分:1)

在Swift 2.1中测试,Xcode 7.工作!

var myItems : String?

myItems = ItemsTextfield.text

myItems as! AnyObject