Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Iphone CoreData删除在iOS 5.1中挂起_Iphone_Ios5_Core Data - Fatal编程技术网

Iphone CoreData删除在iOS 5.1中挂起

Iphone CoreData删除在iOS 5.1中挂起,iphone,ios5,core-data,Iphone,Ios5,Core Data,我正在使用XCode 4.4.1和核心数据为iPhone(iOS5及以上版本)开发一个应用程序 我有许多实体,可以使用NSTableViewController(单独的控制器,但代码类似)查看和删除这些实体 其中一个实体(ExpenseItem)正在删除,但删除其他实体会导致执行被阻止 调试导航器显示一个线程符号和单词“Running”,但我必须按下Stop按钮才能返回edtor 我没有创建任何线程,所以在尝试了几个小时我能想到的一切之后,我不知所措 下面是我为调试问题而编写的一些代码—它保存了

我正在使用XCode 4.4.1和核心数据为iPhone(iOS5及以上版本)开发一个应用程序

我有许多实体,可以使用NSTableViewController(单独的控制器,但代码类似)查看和删除这些实体

其中一个实体(ExpenseItem)正在删除,但删除其他实体会导致执行被阻止

调试导航器显示一个线程符号和单词“Running”,但我必须按下Stop按钮才能返回edtor

我没有创建任何线程,所以在尝试了几个小时我能想到的一切之后,我不知所措

下面是我为调试问题而编写的一些代码—它保存了ExpenseItem对象,但挂起在Account对象上。如果我注释掉ExpenseCount save,则Account save仍然挂起,反之亦然

// 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%。