Objective c NSArray count返回正确的数字,但数据访问有故障

Objective c NSArray count返回正确的数字,但数据访问有故障,objective-c,nsarray,nsmanagedobjectcontext,Objective C,Nsarray,Nsmanagedobjectcontext,我正在尝试获取数组中的项目计数,以将其放置在单元格的右侧细节中。有趣的是,我得到了正确的计数,但当我尝试NSLog它返回的数组时,我的计数是 NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"muscleGroup == %@ && specificExercise == %@ && date >= %@ && date < %@", theMuscleG

我正在尝试获取数组中的项目计数,以将其放置在
单元格的
右侧细节中。有趣的是,我得到了正确的
计数
,但当我尝试
NSLog
它返回的数组时,我的计数是

NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"muscleGroup == %@ && specificExercise == %@ && date >= %@ && date < %@", theMuscleGroup, theExercise, fromDate, toDate];

NSFetchRequest *fetchRequestTemp = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"WeightLiftingInfo" inManagedObjectContext:_managedObjectContext];

[fetchRequestTemp setPredicate:searchPredicate];
[fetchRequestTemp setEntity:entity];
NSError *error;
NSArray *tempArray = [[NSArray alloc] initWithArray:[_managedObjectContext executeFetchRequest:fetchRequestTemp error:&error]];

NSLog(@"%@", tempArray);
NSLog(@"%d", [tempArray count]);
NSPredicate*searchPredicate=[NSPredicate predicate格式:@“muscleGroup==%@&&specific exercise==%@&&date>=%@&&date<%@”,muscleGroup,theExercise,fromDate,toDate];
NSFetchRequest*fetchRequestTemp=[[NSFetchRequest alloc]init];
NSEntityDescription*实体=[NSEntityDescription]
entityForName:@“WeightLiftingInfo”在managedObjectContext:_managedObjectContext];
[fetchRequestTemp setPredicate:searchPredicate];
[fetchRequestTemp setEntity:entity];
n错误*错误;
NSArray*tempArray=[[NSArray alloc]initWithArray:[\u managedObjectContext executeFetchRequest:fetchRequestTemp错误:&错误]];
NSLog(@“%@”,tempArray);
NSLog(@“%d”,[tempArray count]);
我的问题: 基本上,我做错了什么?我是不正确地初始化数组还是试图不正确地记录它


我已经研究了好几个小时,尝试了不同的编码,但还是弄不明白。任何帮助都将不胜感激如果您需要更多信息,或者我正在做一些违反指导原则的事情,请在关闭此线程或“-1”之前通知我。发发慈悲吧,我是新来的,有点倾向:)

当你执行取回请求时,你会得到一个回复。也就是说,一个类似代理的对象,它表示结果,即使真实的数据对象尚未从数据存储中加载。故障知道数组中有多少对象等,当您访问这些对象时,故障将透明地加载真实对象


所以,情况正常,不用担心。尝试使用结果而不是记录结果,我想您会发现一切正常。

可能是数组对象位于不同的线程上。核心数据不支持“开箱即用”的多线程。是否使用多线程?你在实际使用结果而不是记录结果时有困难吗?@ilias我一直没有尝试使用它们,因为我认为访问时会出错。请看下面我对caleb的回复,我再解释一下。谢谢!实际上我只需要计数,所以我没有使用结果。我不确定我是否需要担心这个问题。没问题。使核心数据快速的一个因素是,它延迟加载数据,直到您真正需要它。顺便说一句,我怀疑您是否需要整个
initWithArray:
bit。。。只需使用执行fetch返回的数组。这是您的意思吗<代码>NSArray*tempArray=[\u managedObjectContext executeFetchRequest:fetchRequestTemp错误:&error]?如果是这样的话,有什么区别?对,你知道了。MOC给你一个数组,所以不需要再创建一个,特别是因为你只需要计数。