【发布时间】:2017-11-28 04:14:13
【问题描述】:
我有一个教师实体和一个学生实体。老师可以有很多学生。我如何为所有教师获取信息,但每位教师只能有 5 个学生?
entity =[NSEntityDescription entityForName:@"Teacher" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[context executeFetchRequest:fetchRequest error:nil];
返回所有教师及其所有学生。如何限制/偏移属性? (学生)
【问题讨论】:
-
您不能在获取引用实体期间设置限制。如果您只想显示 5 个学生,只需在显示时执行即可
-
@Paulw11 感谢您的帮助。内存消耗呢?教师可以拥有数百万学生,为什么只需要 5 个就获取/加载所有这些。有没有办法不获取引用的实体?
-
百万?我原以为一位老师在整个职业生涯中最多可能有数千名学生。无论如何,默认情况下,Core Data 会将相关学生作为故障获取;在您访问该对象之前,不会获取整个记录。因此,如果您获取所有学生但只访问前 5 个学生,那么实际上只会获取前 5 个学生。
-
@Paulw11 谢谢。所以没有学生在使用之前被加载到内存中?因为每个学生对象都可能很大,因为它也有数百万的朋友和东西。你是说基本上没有必要限制这些数据,因为 Core Data 有内置的功能来帮助它?
-
如果您认真谈论拥有数亿条记录,那么您可能不应该在设备上保存这些数据;它应该在某个服务器上,应用程序只是通过网络查询它。您可以在此处阅读有关错误关系的信息 - developer.apple.com/documentation/coredata/nsfetchrequest/…
标签: ios objective-c core-data