gpt4 book ai didi

ios - 如何使用 swift 在 iOS 应用程序中以编程方式计算 Parse 类中的行数?

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:30 24 4
gpt4 key购买 nike

我的 iOS 应用程序有一个解析后端。我有一个名为“测验”的解析类。如何读取 Parse 类中的行数,我必须在我的 iOS 应用程序中使用它?

我正在使用以下代码,但 xcode 没有进入代码块。

var cnt = 1
var query = PFQuery(className:"quiz")
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
if error == nil
{
// The find succeeded.
print("Successfully retrieved \(objects!.count) scores.")
cnt = objects!.count
}
else
{
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
}
return cnt

谢谢!

最佳答案

快速回答

findObjectsInBackgroundWithBlock 受限于返回 up to 100 objects by default 的查询限制.可以增加此限制,但只能增加到 maximum of 1000 .因此,您不能依赖 findObjects 然后计算结果。

Parse has included in the documentation一种计算类或特定查询的对象总数的简单方法。

var query = PFQuery(className:"GameScore")
query.whereKey("playerName", equalTo:"Sean Plott")
query.countObjectsInBackgroundWithBlock {
(count: Int32, error: NSError?) -> Void in
if error == nil {
print("Sean has played \(count) games")
}
}

swift 3

let query = PFQuery(className:"GameScore")
query.whereKey("playerName", equalTo:"Sean Plott")
query.countObjectsInBackground { (count, error) in
if error == nil {
print("Sean has played \(count) games")
}
}

详细说明

还应该注意的是,由于计数操作的成本很高,Parse 对其进行了限制

Count queries are rate limited to a maximum of 160 requests per minute. They can also return inaccurate results for classes with more than 1,000 objects. Thus, it is preferable to architect your application to avoid this sort of count operation (by using counters, for example.)

这种不准确不是由于 1000 个请求对象的限制。计数查询将尝试获取记录的总数,而不管大小,但由于操作可能需要大量时间才能完成,因此数据库可能在该窗口期间发生了更改,返回的计数值可能没有不再有效。

处理计数的推荐方法是在云代码中使用保存前/保存后触发器来维护您自己的索引。然而,这也是一个不理想的解决方案,因为保存 Hook 可能会在途中任意失败,并且(更糟糕的是)postSave Hook 没有错误传播。除此之外,这是赫克托·拉莫斯 (Hector Ramos) 在 Parse Developers Google Group 中的另一段引述。 .

Count queries have always been expensive once you throw some constraints in. If you only care about the total size of the collection, you can run a count query without any constraints and that one should be pretty fast, as getting the total number of records is a different problem than counting how many of these match an arbitrary list of constraints. This is just the reality of working with database systems.

最后,引用 Parse 工程博客文章:Building Scalable Apps on Parse .

Suppose you are building a product catalog. You might want to display the count of products in each category on the top-level navigation screen. If you run a count query for each of these UI elements, they will not run efficiently on large data sets because MongoDB does not use counting B-trees. Instead, we recommend that you use a separate Parse Object to keep track of counts for each category. Whenever a product gets added or deleted, you can increment or decrement the counts in an afterSave or afterDelete Cloud Code handler.

关于ios - 如何使用 swift 在 iOS 应用程序中以编程方式计算 Parse 类中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com