2015-06-19 89 views
2

我有一个静态的字符串变量字符串转换为AnyObject在迅速

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 

如何将我的stringAnyObject并将其分配给消息视图控制器?

回答

1

从你的例子,你看到的错误,你正试图解开一个值是不可选的。有价值时,您不需要使用if let。您可以强制使用if let这样的转换:

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

这将产生一个警告说,铸造StringAnyObject总是会成功,你又不需要if let,你的类型转换总是会成功的。

你的最后一个例子应该是这个样子:

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

你需要让你的selectedNumber到可选的是这样的:

struct numb { 

    static var selectedNumber: String? 

} 
+0

哦,我完全错过了,谢谢!但现在出于一些奇怪的原因messageComposeVC.recipients没有值,即使当我做一个println时,textMessageRecipients中有一个字符串值。任何线索? – Adeel

+0

是的,因为你的'textMessageRecipients'是'AnyObject'而不是'[AnyObject]'而你正在将'textMessageRecipients'指定为? '[AnyObject]',所以它将返回零。 –

1

在雨燕2.1测试时,Xcode 7.作品!

var myItems : String? 

myItems = ItemsTextfield.text 

myItems as! AnyObject