iphone核心数据删除导致崩溃
问题描述:
我有一个核心数据对象“实体”有2个字段 - “名称”(一个NSString *)和“类型”(一个EntityType)。 EntityType是使用1个字段名称(NSString *)的另一个核心数据。
我创建并使用在功能上与下面的代码相似的代码删除一个实体对象 -iphone核心数据删除导致崩溃
Entity *e1 = [NSEntityDescription insertNewObjectForEntityName:"@Entity" inManagedObjectContext: context]
EntityType *type = [NSEntityDescription insertNewObjectForEntityName:"@EntityType" inManagedObjectContext: context]
e1.type = type;
现在我删除的实体对象无需给予任何值或保存到持久性存储。
if([e1.name length] == 0) {
[context deleteObject:e1];
NSError *nil;
if(![context:save &error] {
// log error
}
}
在这一点上,我看到一个崩溃,当我尝试删除并保存对象。 (由于未捕获的异常 'NSRangeException' 原因终止:[NSCFArray removeObjectAtIndex]:索引(0)超过界限(0)]
任何指针/建议赞赏
这里是被请求的堆栈跟踪 -
#0 0x3266bdf4 in objc_exception_throw()
#1 0x32d73b32 in +[NSException raise:format:arguments:]()
#2 0x32d73ad2 in +[NSException raise:format:]()
#3 0x33f4a710 in _NSArrayRaiseBoundException()
#4 0x33f7ba3c in -[NSCFArray removeObjectAtIndex:]()
#5 0x30537dc6 in -[NSFetchedResultsController(PrivateMethods) _removeObjectInFetchedObjectsAtIndex:]()
#6 0x3053b50a in -[NSFetchedResultsController(PrivateMethods) _postprocessDeletedObjects:]()
#7 0x3053aa9a in -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:]()
#8 0x33f765d8 in _nsnote_callback()
#9 0x32d9e510 in _CFXNotificationPostNotification()
#10 0x33f741b2 in -[NSNotificationCenter postNotificationName:object:userInfo:]()
#11 0x304b4388 in -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:]()
#12 0x3050768a in -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:]()
#13 0x3049c2b0 in -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:]()
#14 0x304cb186 in -[NSManagedObjectContext save:]()
#15 0x00006d5a in -[MyAppViewController goToMain] (self=0x11b730, _cmd=0x174b3) at /Users/Me/Projects/MyApp/Classes/MyAppViewController.m:611
2010-09-15 17:37:10.053 MyApp[1273:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray removeObjectAtIndex:]: index (0) beyond bounds (0)'
2010-09-15 17:37:10.066 MApp[1273:207] Stack: (
853417245,
845594132,
852966195,
852966099,
............
.............
答
错误从fetchedResults
阵列的FRC的未来我怀疑这是你不执行FRC委托方法正确,这样当实现代码如下尝试更新,它会尝试访问零指数造成一个空阵列。
将FRC连接到任何上下文时,FRC将在您对上下文进行任何更改时自动进行更新,如删除对象(这是跟踪堆栈中的通知正在做什么,告诉FRC进行更新。 )
请添加崩溃堆栈跟踪 – 2010-09-15 06:48:50
添加堆栈跟踪 – 2010-09-15 12:22:39