我一直在尝试添加核心数据.每次我得到同样的错误:
error: filename "EntityName +CoreDataClass.swift" used twice: '/Users/userName/Desktop/Development/MyApp/AppName/EntityName +CoreDataClass.swift' and '/Users/userName/Library/Developer/Xcode/DerivedData/AppName-dgwzrmxsetzvtedibxrazuutjwnh/Build/Intermediates/AppName.build/Debug-iphoneos/AppName.build/DerivedSources/CoreDataGenerated/Model/EntityName +CoreDataClass.swift'
Run Code Online (Sandbox Code Playgroud)
我使用以下步骤添加核心数据:
1.New file/DataModel; 将它保存在我的项目的根目录中,
选择Model.xcdatamodeld并添加实体,添加几个属性,保存,编辑/创建NSManagedObjectClass子类.
因此,我在导航器中观察到4个新文件:Model.xcdatamodeld,EntityName + CoreDataProperties.swift,EntityName + CoreDataClass.swift,_COREDATA_DATAMODELNAME_ + CoreDataModel.swift
他们的内容: _COREDATA_DATAMODELNAME_ + CoreDataModel.swift:
import Foundation
import CoreData
___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
Run Code Online (Sandbox Code Playgroud)
EntityName + CoreDataClass.swift:
import Foundation
import CoreData
class EntityName: NSManagedObject {
}
Run Code Online (Sandbox Code Playgroud)
实体名称+ CoreDataProperties.swift:
import Foundation
import CoreData
extension EntityName {
@nonobjc class func fetchRequest() -> NSFetchRequest< EntityName > {
return NSFetchRequest< EntityName >(entityName: "EntityName");
}
@NSManaged var str: String?
}
Run Code Online (Sandbox Code Playgroud)
我尝试过:
1.清理构建,删除DerivedData,删除var /文件夹的内容,重启
2.删除生成的文件,在导航器中显示
我所有的努力都没有运气. …
我开始尝试使用swift 3和Xcode 8 beta的Core数据.当我尝试从核心数据模型生成NSManagedObject子类并在编辑器菜单中创建NSManagedObject子类...选项时,Xcode 8 beta生成三个文件,其中一个是_COREDATA_DATAMODELNAME_ + CoreDataModel.swift,其中包含以下内容:
import Foundation
import CoreData
___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
Run Code Online (Sandbox Code Playgroud)
此外,此文件的内容显示两个警告:
Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'
Run Code Online (Sandbox Code Playgroud)
有没有人面临同样的问题?这个新文件的含义是什么?
谢谢
我创建了2个核心数据实体,然后从编辑器菜单为它们创建了NSManagedObject子类.
但是,当我运行我的应用程序时,由于某种原因,我在所有文件的每一行都会出错.
这是一个例子,这两个实体创建的文件的错误是相同的.
文件代码是自动生成的,所以我可以在这里使用它,但不确定它的用途
import Foundation
import CoreData
extension UserExercise {
@nonobjc public class func fetchRequest() -> NSFetchRequest<UserExercise> {
return NSFetchRequest<UserExercise>(entityName: "UserExercise");
}
@NSManaged public var id: Int16
@NSManaged public var name: String?
@NSManaged public var reps: Int16
@NSManaged public var sets: Int16
@NSManaged public var weight: Int16
@NSManaged public var relationship: NSSet?
}
// MARK: Generated accessors for relationship
extension UserExercise {
@objc(addRelationshipObject:)
@NSManaged public func addToRelationship(_ value: UserRoutine)
@objc(removeRelationshipObject:)
@NSManaged public func removeFromRelationship(_ value: UserRoutine)
@objc(addRelationship:)
@NSManaged public …Run Code Online (Sandbox Code Playgroud) 我正在观看本教程,在Xcode 8中使用Core Data,视频使用的是Swift.在视频中,他进入Task了核心数据模型中命名的实体,然后在他能够调用的代码中Task:
let task = Task(context: context)
Run Code Online (Sandbox Code Playgroud)
我有一个叫做的实体Tag.如何使用Objective-C在代码中访问Tag?Codegen在Core Data模型中设置,但我在项目中看不到任何其他文件.如果我尝试:
Tag test = [[Tag alloc] init];
Run Code Online (Sandbox Code Playgroud)
我收到一个Tag不存在的错误.
我已经阅读了使用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 …