菜鸟教程小白 发表于 2022-12-12 09:37:39

ios - NSSortDescriptor 在查看详细 View 并返回后按字母顺序重新排序单元格


                                            <p><p>我有一个或多或少基本的 Master Detail 应用程序。我关注了<a href="https://www.youtube.com/watch?v=d664C98BIIY" rel="noreferrer noopener nofollow">this tutorial</a>为了熟悉 <code>Core Data</code>,现在我正在尝试在我的 Master TVC 上重新排序我的单元格。一切正常,包括成功重新排序我的单元格。但是,当我深入查看其中一个详细的 VC 时,我又回到了原始的按字母顺序排列的顺序。我相信这与教程中包含的 <code>NSSortDescriptor</code> "<code>sortDescriptor</code>"有关。我不确定如何删除它,或者如何赋予它不同的特性。任何帮助表示赞赏。下面是我的 <code>NSFetchedResultsController</code> 方法。</p>

<pre><code>-(NSFetchedResultsController*) fetchedResultsController {

    if (_fetchedResultsController != nil) {
      return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [ init];

    NSManagedObjectContext *context = ;

    NSEntityDescription *entity = ;

    ;

    NSSortDescriptor *sortDescriptor = [ initWithKey:@&#34;topName&#34; ascending:YES];

    NSArray *sortDescriptors = [ initWithObjects:sortDescriptor, nil];

    fetchRequest.sortDescriptors = sortDescriptors;

    _fetchedResultsController = [initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];

    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;
}
</code></pre>

<p><strong>编辑:</strong>
经过过去几天的大量研究,我意识到这更多是我的 moveRowAtIndexPath 方法的问题。有人对使用 Core Data 和重新排序单元格的能力有任何建议或建议吗?另外,这是否需要自定义 tableviewcell 类? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的表格 View 是根据名称排序的。鉴于名称是固定的,如果您“手动”重新排序单元格然后返回表格 View ,则重新建立基于名称的排序。</p>

<p>为了得到你想要的,你需要在你的核心数据模型中添加一个叫做<code>sortIndex</code>的字段。然后,您使用基于 <code>sortIndex</code> 的 <code>sortDescriptor</code> 对表进行排序;您可以将 <code>sortIndex</code> 初始化为创建顺序。当用户通过 UI 重新排序单元格时,您还将更改所有受影响的单元格/托管对象的 <code>sortIndex</code>。然后,由于 <code>sortIndex</code> 是 Core Data 模型的一部分,当用户结束并重新启动您的应用程序时,他们的首选排序将被重新建立。</p>

<p>有时,出于建模原因,您不想在某些托管对象中直接包含 <code>sortIndex</code>。例如,<code>Person</code> 有名字和姓氏,但没有 <code>sortIndex</code>(实际上)。您可以创建一个关联,也许是一个 <code>DisplayPreferences</code> 托管对象,在 <code>Person</code> 和一个 <code>DisplayPreferences</code> 之间具有一对一的映射,并且具有<code>DisplayPreferences</code> 中的 <code>sortIndex</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSSortDescriptor 在查看详细 View 并返回后按字母顺序重新排序单元格,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23460244/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23460244/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSSortDescriptor 在查看详细 View 并返回后按字母顺序重新排序单元格