在解析中,我首先从它的方法中获取 AnyObject
,然后我可以使用 objectForKey 方法从那里访问所有对象。但现在 AnyObject
已更改为 Any
。
PFCloud.callFunction(inBackground: apiName.rawValue, withParameters: paramsDict) { (object, error) in
completion(object, error as? NSError)
}
现在这里是 Type Any 完成时的对象,我可以像这样访问它
(object as AnyObject).object(forKey: "cleanPref") as? Bool
这似乎不合适,如果我使用任何类型,那么我需要这样做
if let object = object as? [String: Any] {
if let pref = object["cleanPref"] as? Bool {
}
}
这是正确的做法吗?将 AnyObject 保留在 Any 之后的任何其他解决方案,因为如果我将 AnyObject 迁移到 Any,则需要更改很多代码。
最佳答案
是的,最好按照你所做的去做,但是,但我会改变事情:
代替:
if let pref = object["cleanPref"] as? Bool {
}
使用:
guard let pref = object["cleanPref"] as? Bool else { // Some error }
您还可以添加多个条件:
guard let pref = object["cleanPref"] as? Bool,
let test = object["test"] as? String else { // Some error }
关于ios - 在 swift 3 中使用解析中的 AnyObject 类型和访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40036431/