ios - 从 Parse 使用 countObjects(同步)的语法问题

标签 ios swift parse-platform pfquery

下面是我的函数,其中我突出显示了有效的代码(即异步),但我想要的是带有 PFQuery.countObjects(error: NSErrorPointer) 的同步代码去工作。

//Count how many violations User has.
func checkViolationStatus(usr: PFUser) -> Int32 {
    var violations: Int32 = 0
    var query = PFQuery(className: PF_BLOCKEDUSERS_CLASS_NAME)
    query.includeKey(PF_BLOCKEDUSERS_USER)
    query.whereKey(PF_BLOCKEDUSERS_USER, equalTo: usr)

    //THIS WORKS BUT IS ASYNCHRONOUS AND I WANT IT TO BE SYNCHRONOUS
    //        query.countObjectsInBackgroundWithBlock {
    //            (count: Int32, error: NSError?) -> Void in
    //            if error == nil {
    //                print("Sean has played \(count) games")
    //                violations = count
    //            }
    //        }

    //WANT TO MAKE IT SYNCHRONOUS -- THIS DOES NOT WORK
    violations = query.countObjects(<#T##error: NSErrorPointer##NSErrorPointer#>)

    return violations

}

这里如何正确使用query.countObjects(...)

最佳答案

下面是在 countObjects 中传递 NSError 的语法,以及如果您收到错误则打印错误的代码:

var error: NSError?
violations = query.countObjects(&error)

if error != nil {
    print(error?.localizedDescription)
}

这里有一些解释可以帮助您进一步理解该错误类型。

NSErrorPointer 类型本质上与 Objective-C 中的 NSError** 相同,表示对象的地址,它实际所在的位置,而不仅仅是对象的地址指针,需要满足参数类型。这是 Objective-C 中常见的错误处理模式。

& 运算符允许您将这样的地址传递给函数。传入的参数可以修改,而不是仅限于函数的范围。这在 Swift 术语中称为输入输出参数,因为输入的内容也会输出。

关于ios - 从 Parse 使用 countObjects(同步)的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33204354/

相关文章:

ios - 对象引用未设置为 UiTable 中对象 [Xamarin,IOS] 的实例

ios - 使用 __bridge 转换 ABPersonCopyImageDataWithFormat 的结果以创建 UIImage 时如何防止对象的潜在泄漏?

ios - 为什么我的 unwind segue 会导致我的应用程序崩溃?

ios - 重用 UITableViewCell 时无法重置 UILabel attributeText

ios - 使用 FirebaseStorageUI + SDWebImage 时出错

ios - 如何在用户首次登录后自动登录?

swift - 使用 AlamofireObjectMapper 创建 func 返回一个对象

ios - 如何在 iOS Swift 中设置延迟?

ios - 如何使用 Swift 从 Parse 中的 _User 类获取 currentUserInfo

javascript - 如何计算 Parse 平台上的 BeforeSave CloudCode 中的总用户数