核心数据
let appDelegate = UIApplication.shared().delegate as! AppDelegate
let container = appDelegate.persistentContainer
let managedObjectContext = container.viewContext
for item in items {
let game = NSEntityDescription.insertNewObject(forEntityName: "Game", into: managedObjectContext) as! GameEntity
game.str = item.str
game.rating = item.rating
game.isConquered = false
当执行对 game.conquered 的分配时,我得到:
exception 'NSInvalidArgumentException' reason unrecognized selector sent to instance
在数据模型中
extension GameEntity {
@nonobjc class func fetchRequest() -> NSFetchRequest< GameEntity > {
return NSFetchRequest< GameEntity >(entityName: "Game");
}
@NSManaged var conquered: Bool
@NSManaged var rating: Int32
@NSManaged var str: String?
}
在xCode中的模型资源管理器中征服了 bool 类型
我尝试在代码中将征服类型声明为 bool 值,但出现编译器错误 - 它无法表示为 NSManaged。
我知道我可以使用 Int32 而不是 Bool,并区分 0/1 值,我只是想了解我收到的错误原因是什么。
最佳答案
在我将 isConquered 重命名为征服后,问题已经解决。 因此,据我了解,问题在于前缀,标准中是否有任何规则规定某些前缀不应用于属性名称?
关于 swift 3. xCode8.为实体的 bool 类型属性赋值会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455420/