Sqlite 核心数据,NSMutableArray包含NSManagedObject,插入数组的第一个NSManagedObject后,对象变为零
我正在使用coreData插入NSManagedObject的数组,成功插入第一个对象后,NSMutableArray的第二个对象变为nil为什么? 下面是我的代码的快照:Sqlite 核心数据,NSMutableArray包含NSManagedObject,插入数组的第一个NSManagedObject后,对象变为零,sqlite,core-data,memory-management,nsmutablearray,nsmanagedobject,Sqlite,Core Data,Memory Management,Nsmutablearray,Nsmanagedobject,我正在使用coreData插入NSManagedObject的数组,成功插入第一个对象后,NSMutableArray的第二个对象变为nil为什么? 下面是我的代码的快照: + (void)insertCategoryUsingCategoryArray:(NSMutableArray *)categoryArray { if(!categoryArray) return; for (int i=0;i<[categoryArray count]; i++)
+ (void)insertCategoryUsingCategoryArray:(NSMutableArray *)categoryArray
{
if(!categoryArray)
return;
for (int i=0;i<[categoryArray count]; i++) {
DataCategory *temp=(DataCategory *)[categoryArray objectAtIndex:i];
DataCategory *categoryInfo=(DataCategory *)[NSEntityDescription insertNewObjectForEntityForName:@"DataCategory" inManagedObjectContext:_sing.managedObjectContext];
[categoryInfo setCategoryId:temp.categoryId];
[categoryInfo setName:temp.name];
[categoryInfo setImgSrc:temp.imgSrc];
NSError *error;
if (![_sing.managedObjectContext save:&error]) {
NSLog(@"An error occured while saving! shit : %@", [error localizedDescription]);
}
categoryInfo=nil;
}
}
+(void)insertCategoryUsingCategoryArray:(NSMutableArray*)categoryArray
{
如果(!categoryArray)
返回;
for(int i=0;icategoryArray
不应是此方法的参数。在您的设置中,此方法将数组作为方法专用的变量传递。除非返回某些内容,否则一旦离开此方法,此数组将包含什么内容是不可预测的
相反,您应该有一个由视图控制器管理的ivar
categoryArray = [NSMutableArray array];
在viewDidLoad
中,然后使用此变量,不要将数组传递给该方法
附言:你可以通过消除谩骂来改进你的编程风格仅当数组本身为零时,NSArray实例才应返回nil,这是因为向nil发送消息时返回nil。检查保存消息后categoryArray是否仍然存在。categoryArray仍然存在,但在for中的第一个循环后categoryArray中的所有DataCategory现在都为零