小编典典

Xcode-beta 8.无法创建核心数据

swift

我一直在尝试添加核心数据。每次我遇到相同的错误:

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'

我使用以下步骤添加核心数据:
1.New文件/ 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___

EntityName + CoreDataClass.swift:

import Foundation
import CoreData


class EntityName: NSManagedObject {

}

EntityName + CoreDataProperties.swift:

import Foundation
import CoreData

extension EntityName {

    @nonobjc class func fetchRequest() -> NSFetchRequest< EntityName > {
        return NSFetchRequest< EntityName >(entityName: "EntityName");
    }

    @NSManaged var str: String?

}

我尝试过的操作:
1.清理构建,删除DerivedData,删除var / folders的内容,重新启动
2.删除生成的文件,显示在导航器中

我所有的努力都运气不好。
我做错了什么?


阅读 288

收藏
2020-07-07

共1个答案

小编典典

NSManagedObject当模型文件使用Xcode 8文件格式时,Xcode
8包括自动的类生成。如果创建自己的子类文件,则将创建重复项。错误消息中的第二个文件DerivedSources,是Xcode自动创建的文件。

如果自动生成的文件可以满足您的需求,那么只需停止创建自己的文件,您就可以了。

如果要创建自己的子类,则可以

  • 将模型文件的“工具版本”设置为Xcode 7.3或更早版本以禁用所有代码生成(这似乎对实际文件内容没有任何意义),或者
  • 通过将实体的“ Codegen”设置设置为“ Manual / None”,分别禁用每个实体的自动生成。
2020-07-07