gpt4 book ai didi

快速代码生成文件错误

转载 作者:行者123 更新时间:2023-11-28 07:53:59 24 4
gpt4 key购买 nike

在使用 coredate 时,我使用了选项 codegen: category/extension 来创建一个文件,我可以在其中放入可重复使用的代码来查找、更新或删除数据库条目。我首先使用代码生成选项类定义启动了 coredata 实体,并在稍后阶段将其更改为类别/扩展。

现在我遇到一个编译错误:'属性不能声明为公共(public),因为它的类型使用内部类型'

文件名是生成的swift文件,名称为:Gameresults+Coredataproperties.swift

我在播放器上遇到错误:TournamentPlayer?

player 和 round 都是与另一个实体的关系。

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 等。没有任何效果。

关于如何解决此问题的任何提示?

最佳答案

为代码生成器使用 Manual/None 选项。

这里有几件事你应该考虑。

  1. 当您使用 codegen 时,它会自动创建所有等同于您的公共(public)实体的类。我假设 TournamentPlayer 类不是公开的,你自己定义了它。所以根据默认定义,它是内部的,编译器会正确地给你错误。您在这里唯一可以做的就是更改访问级别,因为您正在使用代码生成器,这意味着您想要更改您的模型,所以最好将您的 TournamentPlayer 更改为公开。虽然这取决于您的应用程序的架构。

  2. 每当您更改模型并保存在 DerivedData 中时,codegen 都会自动重新生成。

  3. 如果您想自己处理它,请将其设置为手动,然后您自己手动处理代码生成。

查看这篇文章,它可以让您更好地了解 codegen https://useyourloaf.com/blog/core-data-code-generation/

还有一件事,当您更改为 manual/none 时,您必须进行干净的构建,否则它仍会使用 DerivedData 中生成的代码

关于快速代码生成文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48839575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com