我最近将我的iOS应用程序项目更新到iOS 10.现在我正在尝试更改我的应用程序的核心数据模型,但Xcode生成的新NSManagedObject子类已损坏.我也尝试修复子类手册,但这不起作用.
Core Data Model的最小工具版本设置为Xcode 7.0,代码生成语言设置为Swift.
这是Xcode生成的代码:
import Foundation
import CoreData
import
extension Group {
@nonobjc public class func fetchRequest() -> NSFetchRequest {
return NSFetchRequest(entityName: "Group");
}
@NSManaged public var name: String?
@NSManaged public var platform: NSNumber?
@NSManaged public var profiles: NSOrderedSet?
}
// MARK: Generated accessors for profiles
extension Group {
@objc(insertObject:inProfilesAtIndex:)
@NSManaged public func insertIntoProfiles(_ value: SavedProfile, at idx: Int)
@objc(removeObjectFromProfilesAtIndex:)
@NSManaged public func removeFromProfiles(at idx: Int)
@objc(insertProfiles:atIndexes:)
@NSManaged public func insertIntoProfiles(_ values: [SavedProfile], at indexes: NSIndexSet)
@objc(removeProfilesAtIndexes:) …Run Code Online (Sandbox Code Playgroud) 我在xcode 8.2中创建了一个核心数据项目,之后我创建了一个实体,在.xcdatamodeld中说"TestEntity"
我正在使用swift3的一些教程中给出的以下代码创建实体对象.在此输入链接描述
let appDele = (UIApplication.shared.delegate) as! AppDelegate
let cont = appDele.persistentContainer.viewContext
let ent = TestEntity(context:cont)
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误"使用未解析的标识符'TestEntity'."
我已经阅读了使用swift 3和Xcode 8 beta对NSManagedObject进行Subclassing,并阅读了这篇精彩的教程.在某些方面仍有疑问.
category/extension它将在新的构建(在派生数据中)得到更新,并且在manual/none它的情况下将保持类文件完整并更新文件导航中的扩展名,即我不会最终得到重复文件.这全部由Xcode处理,因为它们标有预处理器@NSManaged@NSManaged public var name: String?直接转储到现有NSManagedObject子类中.我试过 entity.name = "John"但是我得到了以下错误: reason: '-[SomeEntity setName:]: unrecognized selector sent to instance 0x60400009b120'.我认为这是合理的.我认为不使用核心数据模型编辑器就不会创建setter/getter访问器方法.Category/Extension你只需要自己创建类,并添加您需要任何额外的功能/性能.因为Category/Extension属性是在派生数据中创建的,这就足够了.因为你永远不需要看到那个文件.它的存在足以使事情发挥作用.
特别是在更改 NSManaged属性的上下文中:
更改属性类型,例如NSDate以Date只允许为Manual/None.这里的例子
String?以String只允许为Manual/None.这里的例子仅允许更改属性访问级别,例如从更改public到.这里的例子privateManual/None
如果我选择了Manual/Nonecodegen但是没有选择'create …