gpt4 book ai didi

ios - 核心数据 : executeFetchRequest:error: returns objects with no managedObjectContext

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:55 30 4
gpt4 key购买 nike

我遇到了一个问题,其中 NSManagedObjectContextexecuteFetchRequest:error: 正在返回尚未插入的 NSManagedObjects 数组在上下文中。

我的方法:

- (NSArray *)deleteAllObjectsWithEntityName:(NSString *)entityName {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
fetchRequest.entity = entityDesc;
NSError *error = nil;
NSArray *managedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

// [[self.managedObjectContext registeredObjects] count] : 0
// [[self.managedObjectContext insertedObjects] count] : 0
//
// managedObjects.count : 1
// error : nil
//
// managedObjects[0] : <Foo: 0xe98c1d0>
// managedObjects[0].isDeleted : NO
// managedObjects[0].isFault : NO
// managedObjects[0].isInserted : NO
// managedObjects[0].managedObjectContext : nil
//
// [NSThread isMainThread] : YES
//
// self.managedObjectContext : <NSManagedObjectContext: 0xe97d840>
//

for (NSManagedObject *anObject in managedObjects) {
[self.managedObjectContext deleteObject:managedObject];
}

[self.managedObjectContext save:&error];

// error : Error Domain=NSCocoaErrorDomain Code=134030 \
// "The operation couldn’t be completed. (Cocoa error 134030.)" UserInfo=0x8b6d260 \
// {NSAffectedObjectsErrorKey=(
// "<Foo: 0x10464910> (entity: Foo; id: 0x10464950 <x-coredata:///Job/tE5188F9B-9DC4-4EA2-8636-7790587E114F242> ; data: {...})"
// ), \
// NSUnderlyingException=Cannot update object that was never inserted.},
}

我已验证 self.managedObjectContext 始终在主线程上创建。

根据 NSManagedObjectContext Class Reference ,该对象会自动注册到获取的 managedObjectContext,所以我觉得 registeredObjects 返回一个空集很可疑。

我很困惑,所以我希望有人能发现我的代码有问题,或者知道我错过的一些陷阱。

最佳答案

这是在删除托管对象并保存其上下文后更新托管对象的症状。

我在 View Controller 中保留了对 Foo 实例的引用。我从托管对象上下文中删除了所有 Foo 对象,然后更新了 Foo 实例,然后再次尝试删除所有 Foo 对象。

这个问题帮助我找到了原因:How can I tell whether an `NSManagedObject` has been deleted? .

关于ios - 核心数据 : executeFetchRequest:error: returns objects with no managedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128281/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com