【问题标题】:How to use the generated classes after Xcode did "Class Definition" for Core Data?Xcode为Core Data做了“类定义”后如何使用生成的类?
【发布时间】:2020-01-23 04:06:05
【问题描述】:

我正在使用 Xcode 11.3.1,并在新项目中选择类定义,例如实体。

我似乎无法引用生成的类。即使在我按下 build 之后

let x = Project()
Use of unresolved identifier 'Project'

【问题讨论】:

  • 不确定发生了什么,但如果我更改了核心数据模型并在之后得到一些奇怪的行为,我总是会清理项目并重新构建。

标签: swift xcode core-data


【解决方案1】:

无法复制。我直接从模板创建了一个带有核心数据的新香草单一视图应用程序,并制作了一个和你一样的实体:

然后我在视图控制器的viewDidLoad中添加了一行代码;它编译得很好:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let _ = Project()
    }

}

在像您这样的情况下,最好考虑一下如何它是如何工作的。代码生成从字面上生成代码。您可以查看该代码,方法是按住 Control 键单击单词 Project 并选择“跳转到定义”:

//  Project+CoreDataClass.swift
//  
//
//  This file was automatically generated and should not be edited.
//

import Foundation
import CoreData

@objc(Project)
public class Project: NSManagedObject {

}

如果您没有看到类似的内容,请退出 Xcode,删除 DerivedData 文件夹的内容,再次打开项目,等待索引完成,然后重试。

如果它仍然不起作用,则在模型编辑器中将 Codegen 切换为 Manual/None 并手动生成文件:

完成对话框后,您将直接在项目导航器中看到生成的文件:

到那时你的项目肯定会编译的!

【讨论】:

  • 我猜核心数据模型的自动代码生成有时效果不佳。似乎编译器无法确定生成的模型类在哪里并且无法引用,甚至构建成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 2012-03-16
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多