首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心数据删除问题:第二部分

核心数据删除问题:第二部分
EN

Stack Overflow用户
提问于 2011-01-21 11:10:04
回答 1查看 502关注 0票数 0

亲爱的社区。Bellow是代码的一部分,它可以工作,但是对我来说有两个问题(代码在AppDelegate主线程中工作,从选择对象开始并按下按钮):1.有时,我不知道在代码中我在哪里看到了错误。我不明白,错误(你可以看到它在下面)是从哪里开始的,但如果我在里面有数据(SQLLite文件在70 it左右),就会发生这种情况。2.当删除进程正常工作时,应用程序启动eat内存从40 to到512 to,并在进程完成后保持在相同的级别上。启用内存GC。

你能建议些什么来优化它吗?我有疯狂的两周,在那里我检查谷歌和其他资源,并试图组合代码在我的应用程序。

附注:一些注意事项--如果我不保存moc,我就不能工作,bcs在数据删除后立即开始同步并填充相同的数据。如果不进行保存,则每个实体都有双卷。

2011-01-21 12:54:11.158雪14721:9da7在保存前处理挂起的更改失败。经过100次尝试,上下文仍然很脏。通常,这种递归清理是由错误的验证方法、-willSave或通知处理程序造成的。2011-01-21 12:54:11.160下雪14721:9da7 *终止应用程序由于非常规异常'NSInternalInconsistencyException',原因:“保存前未能处理挂起的更改。经过100次尝试,上下文仍然很脏。通常,这种递归清理是由错误的验证方法-willSave引起的,或通知处理程序.‘*第一次抛出时的调用堆栈:(0 CoreFoundation 0x00007fff885317b4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x00007fff88bc10f3 objc_exception_throw + 45 2 CoreData 0x00007fff8005a654 CoreData _prepareForPushChanges:+ 244 3 CoreData 0x00007fff8005a0af -NSManagedObjectContext保存:+ 207 4雪0x0000000100006fe9 _30-AppDelegate syncOneCarrier:_block_invoke_0 + 1657 5 Foundation 0x00007fff87c4e82 -NSBlockOperation main + 157 6 Foundation 0x00007fff87c3ede4 -__NSOperationInternal start + 681 7 Foundation 0x00007fff87d1dbeb __doStart2 + 97 8 libSystem.B.dylib0x00007fff85f082c4 _dispatch_call_block_and_release + 15 9 libSystem.B.dylib 0x00007fff85ee6831 _dispatch_worker_thread2 + 239 10 libSystem.B.dylib 0x00007fff85ee6168 _pthread_wqthread + 353 11 libSystem.B.dylib 0x00007fff85ee6005 start_wqthread + 13

代码语言:javascript
复制
    NSUInteger x = 0;
    NSError *error = nil;

    for (NSManagedObject *carrier in [carriersArrayVisible selectedObjects]) 
    {
        NSString *carrierName = [NSString stringWithString:[carrier valueForKey:@"name"]];
        [carriersToExecute addObject:carrierName];
        [managedObjectContext deleteObject:carrier];
        //[managedObjectContext processPendingChanges];
        if (x % 10 == 0) {
            //[managedObjectContext save:&error];
            [managedObjectContext processPendingChanges];

            if (error) NSLog(@"Failed to save to data store syncOneCarrier: %@", [error localizedDescription]);
            [pool drain],pool = nil;
            pool = [[NSAutoreleasePool alloc] init];
        }
        x++;
    }
    [pool drain],pool = nil;

    [managedObjectContext save:&error];
EN

回答 1

Stack Overflow用户

发布于 2011-01-21 15:57:33

基于错误,您在某个验证方法中做了一些错误的事情。

  • ,您有托管对象的子类吗?
  • ,这些子类中有验证方法吗?
  • ,这些验证方法是否涉及其他托管对象或删除对象或其他不应该在验证方法中执行的操作?

先检查一下,然后发布您所拥有的任何验证代码,然后可能有人可以帮助您解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4758083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档