Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 将核心数据设置为延迟加载到一个关系_Core Data_Afnetworking_Afincrementalstore - Fatal编程技术网

Core data 将核心数据设置为延迟加载到一个关系

Core data 将核心数据设置为延迟加载到一个关系,core-data,afnetworking,afincrementalstore,Core Data,Afnetworking,Afincrementalstore,我正在使用将iOS应用程序连接到REST API。当我加载初始视图控制器时,我会创建一个NSFetchRequest,将最新的100个事件(NSManagedObjects)加载到视图中。问题是,每个事件与组对象都有1:1的关系,一旦加载事件,就会要求增量存储填充该组对象,在我的例子中,这会触发对服务器的100个事件的单个请求 我可以找到解决此问题的两种方法,例如,如果组已在本地保存,则不向服务器请求组,缓存网络请求,或者不将关系存储在NSManagedObject中。但理想情况下,组对象可能会

我正在使用将iOS应用程序连接到REST API。当我加载初始视图控制器时,我会创建一个NSFetchRequest,将最新的100个
事件(NSManagedObjects)加载到视图中。问题是,每个
事件
对象都有1:1的关系,一旦加载
事件
,就会要求增量存储填充该
对象,在我的例子中,这会触发对服务器的100个
事件
的单个请求


我可以找到解决此问题的两种方法,例如,如果组已在本地保存,则不向服务器请求
,缓存网络请求,或者不将关系存储在NSManagedObject中。但理想情况下,
对象可能会以故障开始,并且只有在访问其一个字段时才请求填充,类似于一对多关系。不幸的是,我找不到任何说明如何强制核心数据中的一对一关系被延迟加载的文档。可能吗?

也许这就是你要找的

从AFIncrementalStore.h:

/**
Returns whether the client should fetch remote relationship values for a
particular managed object. This method is consulted when a managed object
faults on a particular relationship, and will call
`-requestWithMethod:pathForRelationship:forObjectWithID:withContext:` if `YES`.
@param relationship The relationship of the specifified managed object
@param objectID The object ID for the specified managed object.
@param context The managed object context for the managed object.
@return `YES` if an HTTP request should be made, otherwise `NO.  */

- (BOOL)shouldFetchRemoteValuesForRelationship:(NSRelationshipDescription*)
        relationship forObjectWithID:(NSManagedObjectID *)objectID
        inManagedObjectContext:(NSManagedObjectContext *)context;
如果是这样,您可以将其设置为

- (BOOL)shouldFetchRemoteValuesForRelationship:(NSRelationshipDescription *)relationship forObjectWithID:(NSManagedObjectID *)objectID inManagedObjectContext:(NSManagedObjectContext *)context
{
    return NO;
}

在您的
AFRESTClient
子类中。

我也一直在努力解决这个问题。看起来一对一的关系总是很紧张。解决此问题的一种方法是将其声明为一对多关系,以便它自动执行延迟加载。然后在模型类中,可以有一个方法返回集合中的第一个。

我也遇到了这个问题。我现在通过一对多的方法解决了这个问题,因为我知道那里永远只有一个物体。不过这感觉有点骇人。我认为“获取的属性”可能是答案,因为它们基本上是导致获取的属性,在这种情况下似乎是有意义的。但是,我不知道如何访问requestForFetchRequest:withContext中的谓词信息。不仅如此,所获取的属性似乎还是数组(一对多?)。我想我是CoreData的新手。我在推特上发了@mattt这个链接。。。