首页 > 解决方案 > 如何修复“在范围内找不到‘NSFetchRequest’错误

问题描述

我尝试以多种不同的方式创建 NSFetchRequest ,并且每次收到此错误时:

“在范围内找不到类型‘NSFetchRequest’”

以下是我尝试过的具体方法:

let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Task")

let fetchRequest: NSFetchRequest<Task> = Task.NSFetchRequest()

let fetchRequest = Task.fetchRequest() as! NSFetchRequest<Task>

知道为什么这会给我这个错误吗?我知道这不太可能;很简单,但我在 Xcode 12 测试版上,这可能是 Xcode 的错误吗?我学习了一个教程,因为我刚刚学习 SwiftUI(和一般的 Swift),所以在我看来,这段代码应该可以工作。我已经在很多地方寻找答案,所以如果很明显,我很抱歉我错过了。

标签: arraysswiftxcodensfetchrequest

解决方案


在范围内找不到 *

此错误可能出现在您的代码中的原因有多种。

  1. 你没有导入框架
  2. 如果您使用的是 cocoapods,则可能未安装该 pod。
  3. 您打开的是 .xcodeproj 文件而不是 .xcworkspace 文件(如果您使用的是 cocoapods)
  4. 变量不存在
  5. 该文件未添加到目标

#1 你没有导入框架。

如果是第一个选项,则需要查找对象/方法使用哪个框架。如果它是一个外部框架(Xcode 未附带),最好查看您从该网站获得代码/如果您从 GitHub 获得代码,请联系开发人员。

#2 如果您使用的是 cocoapods,则可能未安装 pod

要在您的 Xcode 项目中安装 cocoapods,您需要打开一个新的终端窗口。在那里,您需要导航到您的 Xcode 项目。为此,只需输入cd /path/to/your/xcodeproject. 然后你可以输入pod init. 如果出现错误-bash: pod: command not found提示,则 cocoapods 没有安装。要安装它,只需键入sudo gem install cocoapods. 然后pod init应该可以正常工作。此命令创建一个名为Podfile. 打开它并添加pod 'name-of-your-pod'. 保存并关闭文件。回到终端,输入pod install。现在这将需要一些时间,具体取决于 pod 的大小。完成后,应该有一个 .xcworkspace 文件。从现在开始,您需要打开它而不是标准的 .xcodeproj 文件。

#3 您打开的是 .xcodeproj 文件而不是 .xcworkspace 文件(如果您使用的是 cocoapods)

如果您使用的是 cocoapods,这些 pods 仅在您打开 .xcworkspace 文件时由 Xcode 使用 - 只需打开它,您就可以开始了!

#4 变量不存在

您忘记创建要访问的变量。要创建它,只需键入var myVar = "myString"是否要更改它,或者如果它永远不会更改,请var替换为。let您还需要替换"myString"为您想要的值。另一个原因可能是您在闭包内定义了要访问的变量,这意味着无法从外部访问它。为避免这种情况,请在关闭之前定义您的变量。

#5 文件未添加到目标

为了让 Xcode 在构建应用程序时知道要包含哪些内容,它使用了所谓的“目标”。如果您的文件未添加到任何目标,编译器将无法找到该文件。要将文件添加到目标,请选择文件,然后在右侧窗格中,选择 Target Membership -> (YourAppName)。重建项目应该可以解决问题(感谢@Sravan 指出这一点)。


推荐阅读