在Swift中将字符串转换为任何对象

6

我有一个静态字符串变量

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个回答

2

根据你的示例和错误信息,你试图解包一个非可选值。当存在一个值时,你不需要使用if let。你可以通过以下方式强制转换:

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

这会产生一个警告,提示将 String 强制转换为 AnyObject 总是成功的,同样你不需要使用 if let,你的类型转换总是会成功。

你的最终示例应该类似于:

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

1

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

struct numb {

    static var selectedNumber: String?

}

哦,我完全错过了那个。但现在出现了一些奇怪的情况,messageComposeVC.recipients没有值,即使当我执行println时,textMessageRecipients中有一个字符串值。有线索吗? - Adeel
是的,因为你的 textMessageRecipientsAnyObject 而不是 [AnyObject],而且你正在将 textMessageRecipients 分配为 as? [AnyObject],所以它会返回 nil。 - Dharmesh Kheni

1

已在Swift 2.1和Xcode 7中测试,可以正常工作!

var myItems : String?

myItems = ItemsTextfield.text

myItems as! AnyObject

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接