swift 3. xCode8.为实体的 bool 类型属性赋值会引发错误

标签 swift core-data ios10

核心数据

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/

相关文章:

ios10 - UISwitch setOn(:, 动画:) 不能作为文档工作

ios - 如何在 iOS 10 通知中获取应用程序状态?

mvvm - 其 View 不在窗口层次结构中

swift - 如何使用 UIPushBehavior 以相同的速度推送动态对象?

swift - WKWebview 加载的页面无法正常交互

ios - 当使用 JSON 在后台加载数组并在 TableView 中进行选举时,事件指示器不会消失

swift - 如何将图像从 collectionviewcell 存储到核心数据

ios - 如何快速播放下载的音频文件

iphone - 如何在 CoreData 应用程序中使用默认数据初始化存储?

ios - 在使用 Swift 3 的 Xcode 8 中寻找有关修订后的 NSPersistentContainer 的清晰教程