如何在Swift3中向实体插入新数据?

mat*_*asl 9 core-data nsmanagedobject nsentitydescription swift swift3

在之前的swift中,我能够使用这样的代码在我的数据模型中向我的"TestEntity"添加新数据.

NSManagedObject 是为我的"TestEntity"创建的,我能够使用"dot"语法设置其属性

最后,我会保存上下文

let entity=NSEntityDescription.insertNewObject(forEntityName: "TestEntity", into: context) as! TestEntity
entity.testAttribute="test value"
context.save()
Run Code Online (Sandbox Code Playgroud)

此代码在Swift3中不起作用.当我运行它时,我得到以下运行时错误:

无法将'NSManagedObject_TestEntity_'(0x175306b0)类型的值转换为'testCoreData.TestEntity'(0xd6bb8).2016-06-19 11:07:52.305195 testCoreData [689:264453]无法将'NSManagedObject_TestEntity_'(0x175306b0)类型的值转换为'testCoreData.TestEntity'(0xd6bb8)

任何人都可以了解如何在swift3中完成这项工作,好吗?任何帮助都非常感谢.谢谢.

问题的第二部分是如何再次访问数据.以下代码以错误结束:致命错误:NSArray元素无法匹配Swift数组元素类型

let fr:NSFetchRequest<TestEntity>=TestEntity.fetchRequest()

do {
   let searchResults=try context.fetch(fr)
   if let results=searchResults {
      for result in results {
         print("testAtt = \(result.testAtt)")
      }
   }
} catch {

}
Run Code Online (Sandbox Code Playgroud)

vad*_*ian 6

如果存在NSManagedObject子类,TestEntity则新语法为

let entity = TestEntity(context: context)
entity.testAttribute="test value"
Run Code Online (Sandbox Code Playgroud)