在使用coredate时,我使用了选项codegen: category/extension来创建一个文件,在这个文件中我可以放入可重用的代码来查找、更新或删除数据库条目。我首先使用codegen option Class定义启动了coredata实体,并在稍后将其更改为category/extension。
现在我遇到一个编译错误:“属性不能声明为公共的,因为它的类型使用了内部类型”。
文件名是一个生成的快速文件,名为: Gameresults+Coredataproperties.swift
我得到了播放器的错误: TournamentPlayer?
玩家和轮都是与另一个实体的关系。
import Foundation
import CoreData
extension GameResults {
@nonobjc public class func fetchRequest() -> NSFetchRequest<GameResults> {
return NSFetchRequest<GameResults>(entityName: "GameResults")
}
@NSManaged public var earnedRankingPoints: Int16
@NSManaged public var framePoints: Int16
@NSManaged public var highestBreak: Int16
@NSManaged public var isWon: Bool
@NSManaged public var player: TournamentPlayer?
@NSManaged public var round: Rounds?
}我不敢相信错误真的来自swift,所以我尝试了干净的构建文件夹选项,保存文件,退出XCode等,但都没有起作用。
如何解决这个问题,有什么建议吗?
发布于 2018-02-17 18:05:52
对编解码器使用Manual/None选项。
这里有几件事你应该考虑一下。
如果您想自己处理它,请将其设置为手动,并手动处理代码生成。
查看这篇文章,它让您更好地理解codegen https://useyourloaf.com/blog/core-data-code-generation/。
还有一件事,当您更改为manual/none时,您必须进行干净的构建,否则它仍然使用DerivedData中生成的代码
https://stackoverflow.com/questions/48839575
复制相似问题