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]
}