当前位置: 首页 > 面试题库 >

如何使用Swift在iOS应用中以编程方式对Parse类中的行进行计数?

东方森
2023-03-14
问题内容

我的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受查询限制的约束,默认情况下最多返回100个对象。可以增加此限制,但最多只能增加1000。因此,您不能依靠findObjects然后计算结果。

Parse在文档中提供了一种简单的方法来计算类或特定查询的对象总数。

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")
  }
}

迅捷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对它们进行了限制

计数查询的速率限制为每分钟最多160个请求。对于包含1,000个以上对象的类,它们还可能返回不正确的结果。因此,最好是设计应用程序来避免这种计数操作(例如,通过使用计数器)。

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

推荐的计数方法是在云端代码中使用保存触发器之前/之后实质上维护自己的索引。但是,这也是一个非理想的解决方案,因为保存挂钩可能会任意途中失败,并且(更糟糕的)postSave挂钩也不会传播错误。除此之外,这是Parse
Developers Google Group的
Hector Ramos的另一句话。

一旦引入一些约束,计数查询就一直很昂贵。如果您只关心集合的总大小,则可以在没有任何约束的情况下运行计数查询,并且该查询应该很快,因为获取记录总数就是与计算其中有多少匹配任意约束列表相比,这是一个不同的问题。这只是使用数据库系统的现实。

最后,引用Parse
Engineering博客文章:在Parse上构建可扩展的应用程序。

假设您正在构建产品目录。您可能希望在顶级导航屏幕上显示每个类别中的产品数量。如果对这些UI元素中的每一个运行计数查询,它们将无法在大型数据集上高效运行,因为MongoDB不使用计数B树。相反,我们建议您使用单独的解析对象来跟踪每个类别的计数。每当添加或删除产品时,您都可以在afterSave或afterDelete
Cloud Code处理程序中增加或减少计数。



 类似资料:
  • 问题内容: 解析服务器提供OAuth身份验证。如何使用Parse Server的预定义OAuth模块(例如Facebook)来注册新用户或登录“ _User”类的现有用户? Parse Server 文档提供了有关如何配置OAuth模块的示例。但是,如何在iOS项目中使用它来登录或注册用户? 问题答案: 1,创建一个从NSObject和PFUserAuthenticationDelegate扩展的

  • 问题内容: 我已经搜索了其他问题,但是似乎仍然无法在swift 3中使用自动布局以编程方式创建我的scrollView。我可以使我的scrollview出现,如下图所示,但是当我滚动到底部时,其他标签可以显示不会显示,并且“滚动顶部”标签不会消失。 希望有人可以帮助您在下面查看我的代码! 问题答案: 使用约束定义滚动内容大小很容易-因此您不必进行任何手动计算。 只记得: 滚动视图的 内容元素 必须

  • 我试图编写一个连接应用程序,将从外部来源接收一组数据,并通过其API将其放在microsoft dynamics 365 business central的实例中。文档说明有两种方法可以做到这一点,使用基本身份验证和通过Azure Active Directory登录。前者以编程方式简单明了,但文档非常清楚地表明,它不适用于生产环境。我可以使用邮递员来完成后一种操作,但过程的一部分涉及到我在弹出窗

  • 本文向大家介绍如何以编程方式“重启” iOS应用程序?,包括了如何以编程方式“重启” iOS应用程序?的使用技巧和注意事项,需要的朋友参考一下 无论如何,您都无法重启iOS应用程序,即使您能够使用某些私有api,您的应用程序也将被Apple拒绝,并且不会被视为App Store版本。

  • 问题内容: 我正在使用此代码在 iOS* Objective C中 以 编程方式推送 SHOW 和 MODALLY 。 现在想了解Swift 3。 * 问题答案: 推 喜欢 或更安全 当下 或更安全

  • 我试图实现一个非常简单的用例,一个UI特性,其中: null 这些建议和类似的建议都不起作用。我也试着愚弄一下反应,看看我能不能做点什么!我使用了真实的DOM: 而且也没用。我甚至无法理解的一件事是这样的建议:将ref作为一个方法(我“猜测”),我甚至没有尝试它,因为我有很多这样的组件,我需要ref来进一步获得每个组件的值,我无法想象如果我的ref没有命名,我如何获得的值! 所以你能给出一个想法,