PFQuery 在 Swift 3 转换后没有运行

Posted

技术标签:

【中文标题】PFQuery 在 Swift 3 转换后没有运行【英文标题】:PFQuery not running after Swift 3 conversion 【发布时间】:2017-04-09 18:41:24 【问题描述】:

我迁移到 Swift 3 并将我的所有 Parse 函数更新为最新的语法。现在,没有任何查询返回任何内容。没有错误,但也没有对象。奇怪的是,它看起来不像是在打电话,因为它立即不返回任何对象,并且状态栏中没有像往常一样旋转的活动指示器。查询代码如下:

   let profileQuery:PFQuery = PFQuery(className: "_User")
    profileQuery.whereKey("emailLowercase", equalTo: emailField.text!.lowercased() as String)
    profileQuery.findObjectsInBackground(block:  (objects: [PFObject]?, error: Error?) in


        print(objects?.count)

   )

谢谢!

【问题讨论】:

【参考方案1】:

试一试:

            let Query = PFQuery(className: "_User")
                Query.whereKey("emailLowercase", equalTo: emailField.text!.lowercased() as String)
                Query.findObjectsInBackground(block:  (objects, error) -> Void in

                  if (error == nil) 
                    print("Success")
                    print(objects?.count)
                   else 
                    print("Error")
                  
               )

【讨论】:

感谢您的回答。不过同样的问题。错误是零,但对象的数量也是如此(我知道应该有 1 个)。仍然是同样的问题,看起来查询甚至没有进行调用(立即返回 nil 并且没有旋转) 嗯,那么我认为您需要深入挖掘并确保存在服务器正在运行的实例等。检查并确保解析库添加正确。 不完全相关,但可能是时候开始考虑 Parse 的其他平台了。在过去的几个月里,androidios SDK 几乎没有任何进展。【参考方案2】:

你的查询代码应该是这样的;

let query = PFUser.query()

【讨论】:

【参考方案3】:

正如 Baris 所建议的那样,你唯一的问题是你查询的类是错误的。您不能使用 ("_User") 进行查询

let profileQuery =  PFUser.query()
profileQuery.whereKey("emailLowercase", equalTo: emailField.text!.lowercased() as String)
profileQuery.findObjectsInBackground(block:  (objects: [PFObject]?, error: Error?) in
  if error == nil
    print(objects?.count)
  
)

【讨论】:

以上是关于PFQuery 在 Swift 3 转换后没有运行的主要内容,如果未能解决你的问题,请参考以下文章

Spritekit 应用程序在设备上运行时崩溃,在 swift 3 转换后在模拟器上工作

Swift - 'PFObject不能转换为NSString'

如何通过 PFQuery 从 Parse 中删除对象

升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告

在 PFQuery 完成后开始一些事情

Parse - Swift 中的 NSNull null 模拟