ios - 在 swift 3 中使用解析中的 AnyObject 类型和访问对象

标签 ios swift swift3 xcode8

在解析中,我首先从它的方法中获取 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/

相关文章:

swift - moveRowAtIndexPath 后重新加载数据

ios - 如何将 Alamofire 与 Json 字典中的数组一起使用?

ios - Swift 3 - 关闭当前的 ViewController 并打开新的 ViewController

swift - 如何用我的 SKScene 捕捉鼠标右键事件

ios - Flex 移动项目 : Open PDF in Native Reader on iOS

ios - 在 iOS 中检测 Touch ID 扫描持续时间

ios - 后台音频不适用于模拟器

ios - Braintree iOS SDK 与 Card I/O iOS SDK 冲突 : duplicate symbols for architecture armv7

ios - 如何在swift中从特定时间开始发送本地通知UNTimeInterval [iOS]

ios - 主线程 pfquerytableviewcontroller