Ios 核心数据难题:无法调用NSFetchedResults两次

Ios 核心数据难题:无法调用NSFetchedResults两次,ios,objective-c,cocoa-touch,core-data,magicalrecord,Ios,Objective C,Cocoa Touch,Core Data,Magicalrecord,我有一个自定义UITableViewController,名为mainViewController 它在头文件中有一个公共属性 @property (strong, nonatomic) NSMutableArray *someGroups; 此属性在viewDidLoad方法中设置 _someGroups = [[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateW

我有一个自定义UITableViewController,名为mainViewController

它在头文件中有一个公共属性

@property (strong, nonatomic) NSMutableArray *someGroups;
此属性在
viewDidLoad
方法中设置

_someGroups = [[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", [GGUser currentUser]]] mutableCopy];
但是,出于某种原因,如果我调用以下命令,那么一旦加载视图,它将返回0个对象

这很烦人,尤其是当我想在表视图控制器中
重新加载数据时,因为这个数组是数据源,所以表视图变为空白,因为这个方法现在返回0个对象

我目前正在使用MagicalRecord,有人知道为什么会发生这种情况吗


谢谢大家!

MagicalRecord中没有缓存您的find*请求的内容。对任何find方法的每次调用都将生成一个新请求,并对该新请求执行一个新的fetch。我猜测您的第二次获取失败的原因:

  • 默认上下文(通过不指定上下文而隐式使用)以某种方式为nil
  • 您的currentUser方法正在返回nil
  • 第二次呼叫时,您的数据存储为空
  • 实际上,您并没有调用方法在正确的时间重新加载数据
  • 您没有刷新数据视图

  • MagicalRecord内置了日志记录。我建议打开它,看看日志中是否出现任何错误。这些将有助于查明核心数据可能出现的任何问题。

    那么,当您采用这种方法时会发生什么?你有MagicalRecord的密码,而_findAllSortedBy先生:。。。并不是非常复杂,所以请介入并找出获取请求失败的原因。是否发生了错误?上下文是否为零?我不知道如何进行方法调用,很抱歉,我正在制作我的第一个iOS应用程序,因此我对@calebyo中的一些内容是新的,可以从Xcode本身的方便的帮助菜单中找到。花一两个小时学习使用调试器将比堆栈溢出更能帮助你。哦,我明白了,我知道怎么做,我只是从来没有看过堆栈跟踪,只是控制台,谢谢@Caleb2,3,4,5都没问题,所以我猜defaultContext出于某种原因是零,我如何取消零呢?你确定吗?可以在每个find方法上使用(可选)inContext:参数显式指定上下文。创建一个不是零的上下文,然后尝试。
    [[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", [GGUser currentUser]]] mutableCopy];