0

我有一个自定义 UITableViewController,称为 mainViewController。

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

@property (strong, nonatomic) NSMutableArray *someGroups;

该属性在viewDidLoad方法中设置

_someGroups = [[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", [GGUser currentUser]]] mutableCopy];

但是,由于某种原因,如果我调用以下命令,一旦视图加载,它就会返回 0 个对象

[[GGGroups findAllSortedBy:@"lastUpdated" ascending:NO withPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", [GGUser currentUser]]] mutableCopy];

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

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

谢谢!

4

1 回答 1

0

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

  1. 默认上下文(您通过未指定一个而隐式使用)以某种方式为零
  2. 您的 currentUser 方法返回 nil
  3. 第二次调用时,您的数据存储为空
  4. 您实际上并没有在正确的时间调用您的方法来重新加载数据
  5. 您没有刷新数据视图

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

于 2013-05-20T22:08:24.797 回答