Iphone CoreData删除在iOS 5.1中挂起
我正在使用XCode 4.4.1和核心数据为iPhone(iOS5及以上版本)开发一个应用程序 我有许多实体,可以使用NSTableViewController(单独的控制器,但代码类似)查看和删除这些实体 其中一个实体(ExpenseItem)正在删除,但删除其他实体会导致执行被阻止 调试导航器显示一个线程符号和单词“Running”,但我必须按下Stop按钮才能返回edtor 我没有创建任何线程,所以在尝试了几个小时我能想到的一切之后,我不知所措 下面是我为调试问题而编写的一些代码—它保存了ExpenseItem对象,但挂起在Account对象上。如果我注释掉ExpenseCount save,则Account save仍然挂起,反之亦然Iphone CoreData删除在iOS 5.1中挂起,iphone,ios5,core-data,Iphone,Ios5,Core Data,我正在使用XCode 4.4.1和核心数据为iPhone(iOS5及以上版本)开发一个应用程序 我有许多实体,可以使用NSTableViewController(单独的控制器,但代码类似)查看和删除这些实体 其中一个实体(ExpenseItem)正在删除,但删除其他实体会导致执行被阻止 调试导航器显示一个线程符号和单词“Running”,但我必须按下Stop按钮才能返回edtor 我没有创建任何线程,所以在尝试了几个小时我能想到的一切之后,我不知所措 下面是我为调试问题而编写的一些代码—它保存了
// deleteObject ** why does this hang ???
-(void)deleteObjectX {
NSNumber *ExpenseKey = [NSNumber numberWithInt:9]; // test data
NSString *AccountCode = @"Cash";
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
NSManagedObject* thisExpenseItemObject = [self getExpenseItemObject:ExpenseKey]; // ExpenseItem
NSManagedObject* thisAccountObject = [self getAccountObject:AccountCode]; // Account
// if the next 3 lines are commented out it still hangs on the last line
[managedObjectContext deleteObject:thisExpenseItemObject]; // OK
BOOL result = [thisExpenseItemObject isDeleted]; // result is YES
[managedObjectContext save:nil]; // works
[managedObjectContext deleteObject:thisAccountObject]; // OK
result = [thisAccountObject isDeleted]; // result is YES
[managedObjectContext save:nil]; // ***Hangs Here ! ***
}
如有任何建议,我将不胜感激
谢谢,罗斯账户有关系吗?如果是,他们的删除规则是什么?(如果在挂起期间暂停执行,堆栈会是什么样子?)没有关系也没有规则-只有实体。请删除上面的托管对象上下文保存行并重试。希望你能删除这两个对象。谢谢,但我已经试过了。我在上面的回答应该是:没有关系也没有规则——只有实体。当我在挂起期间暂停执行时(谢谢-我不知道我可以这么做!),我在调试导航器中得到以下堆栈:线程1;)sqlite3BtreeOpen;11-[NSManagedObjectContext保存:];12-[XeXDataModel deleteObjectX];13-[XeXInfoViewController删除分配];14-[NSObject性能选择器:withObject:withObject:];32 UIC应用程序主界面;33条主要道路;34开始;还有一个线程2和线程4 WebThread,看起来是系统生成的。再次查看调试堆栈,如果我反复运行并暂停,每次在顶部都会出现不同的消息,包括各种sqlite消息。它似乎处于循环中-它使用了我的一个CPU核心的100%。