Swift 订阅上下文时强制转换为数组或字典类型:Any

Swift 订阅上下文时强制转换为数组或字典类型:Any,swift,Swift,我已经意识到,我在下标context:Any时得到的数据具有Any类型。我试图确保数据支持订阅,例如数组或字典 我曾尝试转换数组和字典类型,但没有成功,并且阅读了许多与订阅和转换相关的问题,但没有一个说明订阅的用法context:Any。我需要做什么 public var recieverNumber = "" public var recieverName = "" class Messenger: WKInterfaceController, WCSessionDelegate { @I

我已经意识到,我在下标
context:Any
时得到的数据具有Any类型。我试图确保数据支持订阅,例如数组或字典

我曾尝试转换数组和字典类型,但没有成功,并且阅读了许多与订阅和转换相关的问题,但没有一个说明订阅的用法
context:Any
。我需要做什么

public var recieverNumber = ""
public var recieverName = ""

class Messenger: WKInterfaceController, WCSessionDelegate {

@IBAction func send() {
    let newNumber = recieverNumber.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
    let escapedString = message.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
    WKExtension.shared().openSystemURL(URL(string: "sms:&recipients=\(newNumber)&body=\(escapedString)")!)

    recieverNumber = ""
    recieverName = ""
    // ...code...
    dismiss()
}

@IBAction func contacts() {
    recieverNumber = ""
    recieverName = ""
    // ...code...
    dismiss()
}

// ...code...

override func awake(withContext context: Any?) {
    super.awake(withContext: context)
    // ...code...
    recieverName = context![0] as! String // error
    recieverNumber = context![1] as! String // error
}

最安全的方法是将
Any?
条件向下转换为预期的类型(字符串
数组)

override func awake(withContext context: Any?) {
    super.awake(withContext: context)
    guard let receiver = context as? [String], receiver.count > 1 else { return }
    recieverName = receiver[0]
    recieverNumber = receiver[1]
}