gpt4 book ai didi

objective-c - insertNewObjectForEntityForName 返回 nil

转载 作者:可可西里 更新时间:2023-11-01 04:54:03 25 4
gpt4 key购买 nike

我一直在使用 Core Data,因为它是为 iOS 发布的,但我无法弄清楚我的一个实体的 insertNewObjectForEntityForName 方法调用发生了什么。当调用该方法时,它只返回一个 nil 对象,并且不会抛出异常。

代码如下:

@try {
self.observation = [NSEntityDescription insertNewObjectForEntityForName:@"Observation" inManagedObjectContext:moc];
NSLog(@"No exception on insert");
}
@catch (NSException *exception) {
NSLog(@"Insert exception - %@", exception.description);
}
NSLog(@"observation: %@", self.observation ? self.observation.description : @"nil");

这是输出:

2012-10-19 10:16:08.749 Track[63779:c07] No exception on insert
2012-10-19 10:16:08.750 Track[63779:c07] observation: nil

我可以对我的 ERD 中的所有其他实体执行插入。只是这个在 mock (双关语)我。

最佳答案

(Xcode 7.2 Swift 项目)重命名实体后,我的数据模型变得困惑并在执行 insertNewObjectForEntityForName 时开始返回 nil 对象。以下是我为解决此问题所做的三件事:

  1. 我首先使用了@PhillipMills 的建议:po mainQueueContext.persistentStoreCoordinator?.managedObjectModel在输出中,我看到“managedObjectClassName”是带有项目前缀的旧实体/类名称。

    ... NewEntityName = "(< NSEntityDescription: 0x7f9773783440>) name DetectedData, managedObjectClassName MyProject.OldEntityName, ...

  2. 为了尝试解决这个问题,我删除并重新创建了该实体。但这在插入时也返回了 nil 对象。我查看了界面生成器,发现类字段是空白的。我设置类名来解决这个问题。 Xcode Data Model Inspector

  3. 在此过程中的某个时刻,Xcode 生成的 Swift 文件出现了第三个问题:

缺少 objc() 声明:

import Foundation
import CoreData

class NewEntityName: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
}

固定版本:

import Foundation
import CoreData

@objc(NewEntityName) //THIS WAS MISSING
class NewEntityName: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
}

关于objective-c - insertNewObjectForEntityForName 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976780/

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