• <i id='AgxvS'><tr id='AgxvS'><dt id='AgxvS'><q id='AgxvS'><span id='AgxvS'><b id='AgxvS'><form id='AgxvS'><ins id='AgxvS'></ins><ul id='AgxvS'></ul><sub id='AgxvS'></sub></form><legend id='AgxvS'></legend><bdo id='AgxvS'><pre id='AgxvS'><center id='AgxvS'></center></pre></bdo></b><th id='AgxvS'></th></span></q></dt></tr></i><div id='AgxvS'><tfoot id='AgxvS'></tfoot><dl id='AgxvS'><fieldset id='AgxvS'></fieldset></dl></div>
    <legend id='AgxvS'><style id='AgxvS'><dir id='AgxvS'><q id='AgxvS'></q></dir></style></legend>

        <bdo id='AgxvS'></bdo><ul id='AgxvS'></ul>

    1. <small id='AgxvS'></small><noframes id='AgxvS'>

      <tfoot id='AgxvS'></tfoot>

        通过 NSFetchedResultsController 按距离排序的核心数据

        时间:2023-09-02

        • <tfoot id='NdM0a'></tfoot>
                <i id='NdM0a'><tr id='NdM0a'><dt id='NdM0a'><q id='NdM0a'><span id='NdM0a'><b id='NdM0a'><form id='NdM0a'><ins id='NdM0a'></ins><ul id='NdM0a'></ul><sub id='NdM0a'></sub></form><legend id='NdM0a'></legend><bdo id='NdM0a'><pre id='NdM0a'><center id='NdM0a'></center></pre></bdo></b><th id='NdM0a'></th></span></q></dt></tr></i><div id='NdM0a'><tfoot id='NdM0a'></tfoot><dl id='NdM0a'><fieldset id='NdM0a'></fieldset></dl></div>
              1. <small id='NdM0a'></small><noframes id='NdM0a'>

                <legend id='NdM0a'><style id='NdM0a'><dir id='NdM0a'><q id='NdM0a'></q></dir></style></legend>

                  <tbody id='NdM0a'></tbody>
                  <bdo id='NdM0a'></bdo><ul id='NdM0a'></ul>
                  本文介绍了通过 NSFetchedResultsController 按距离排序的核心数据中的位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我的 iOS Core Data 数据库中有一组实体对象,用于描述某个位置的某些内容.让我们称实体位置.我通过在 Location 上有两个引用位置的属性来实现这一点 - 纬度和经度,都是双精度的.还有其他元素,例如名称.

                  I have a set of entity objects in my iOS Core Data database that describe something at a location. Let's call the entity Location. I have implemented this by having two attributes on Location that refer to the location - latitude and longitude, both doubles. There are other elements, like name.

                  我正在使用 NSFetchedResultsController 将实体绑定到 UITableViewController.我想做的是让结果按到给定 CLLocationCoordinate2D 的距离排序.在一个非常理想的情况下,我可以刷新该列表以根据新位置重新计算排序.因此,这种排序将取决于两个键和第三个静态"变量(一个不会在集合中的项目之间变化的变量).

                  I am using a NSFetchedResultsController to bind the entities to a UITableViewController. What I would like to do is have the results sorted by distance to a given CLLocationCoordinate2D. In an really ideal scenario, I'm able to refresh that list to recalculate the sort based on a new location. Therefore, this sort would depend on two keys, and a third "static" variable (one that doesn't vary across the items in the collection).

                  如果我使用 NSSortDescriptors 对任意列表进行排序,我想我可以弄清楚如何做到这一点.但是,我不控制排序描述符在 NSFetchedResultsController 中的使用方式.

                  I think I could figure out how to do this if I was sorting an arbitrary list with NSSortDescriptors. However, I don't control how the sort descriptors are used in an NSFetchedResultsController.

                  有没有一种方法可以配置我的实体、我的 NSFetchedResultsController、我的 NSSortDescriptors 等来完成此任务?我怀疑答案不在于创建一个花哨的 NSSortDescriptor,而是在实体中创建一个表示与我的距离的瞬态属性,并定期重新计算该属性.但是,我对 Core Data 还很陌生,所以我不确定如何最好地做到这一点(遍历所有实体并重新计算一个字段).我也不确定 NSSortDescriptors 是否适用于瞬态属性.

                  Is there a way that I could configure my entities, my NSFetchedResultsController, my NSSortDescriptors, etc. to accomplish this? I suspect that the answer lies not in creating a fancy NSSortDescriptor but instead in creating a transient attribute in the entity that represents the distance-to-me, and recalculating that attribute periodically. However, I'm new enough to Core Data that I'm not sure how to best do this (iterate over all entities and recalculate a field). I'm also not sure if NSSortDescriptors will work on Transient attributes.

                  推荐答案

                  (来自评论:)

                  (基于 SQLite)Core Data 存储的获取请求不能使用基于瞬态属性或基于 Objective-C 谓词的排序描述符.

                  A fetch request for a (SQLite based) Core Data store cannot use sort descriptors based on transient attributes or Objective-C based predicates.

                  如果您不想失去获取结果控制器的优势(如动画表格视图更新、自动分组到部分等),您必须预先计算到当前位置的距离并将其存储在 (对象的持久性)属性.

                  If you don't want to loose the advantages of a fetched results controller (like animated table view updates, automatic grouping into sections etc.) you have to pre-compute the distance to the current location and store it in a (persistent) attribute of your objects.

                  或者,您可以获取所有对象并在内存中对其进行排序.在这种情况下,您可以使用任意排序描述符.但这不能与获取的结果控制器结合使用,因此您必须注册托管对象上下文中的更改并在必要时重新加载表.

                  Alternatively, you could fetch all objects and sort them in memory. In that case you can use arbitrary sort descriptors. But that cannot be combined with a fetched results controller, so you would have to register for changes in the managed object context and reload the table if necessary.

                  这篇关于通过 NSFetchedResultsController 按距离排序的核心数据中的位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:Swift:用户位置附近的地理围栏/地理位置 下一篇:如何检测位置提供者?GPS 或网络提供商

                  相关文章

                  最新文章

                    <legend id='wZxuf'><style id='wZxuf'><dir id='wZxuf'><q id='wZxuf'></q></dir></style></legend>
                      • <bdo id='wZxuf'></bdo><ul id='wZxuf'></ul>
                      <tfoot id='wZxuf'></tfoot>

                    1. <i id='wZxuf'><tr id='wZxuf'><dt id='wZxuf'><q id='wZxuf'><span id='wZxuf'><b id='wZxuf'><form id='wZxuf'><ins id='wZxuf'></ins><ul id='wZxuf'></ul><sub id='wZxuf'></sub></form><legend id='wZxuf'></legend><bdo id='wZxuf'><pre id='wZxuf'><center id='wZxuf'></center></pre></bdo></b><th id='wZxuf'></th></span></q></dt></tr></i><div id='wZxuf'><tfoot id='wZxuf'></tfoot><dl id='wZxuf'><fieldset id='wZxuf'></fieldset></dl></div>

                      <small id='wZxuf'></small><noframes id='wZxuf'>