如何解决“在范围内找不到‘NSFetchRequest’错误

Mar*_*rdo 14 arrays xcode nsfetchrequest swift

我尝试以多种不同的方式创建 NSFetchRequest,每次出现此错误时:

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

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

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

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

let fetchRequest = Task.fetchRequest() as! NSFetchRequest<Task>
Run Code Online (Sandbox Code Playgroud)

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

Fre*_*mer 11

在范围内找不到 *

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

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

解决错误 #1

如果是第一个选项,则需要查找对象/方法使用的框架。如果它是一个外部框架(不随 Xcode 一起提供),那么查看您从 GitHub 获取代码的站点/联系开发人员可能是个好主意。

解决错误 #2

要在您的 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

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

解决错误 #4

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

解决问题 #5

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

  • #5,如果文件未添加到目标。确保将文件添加到相应的目标。您也可以在构建阶段中检查相同的内容。 (2认同)

小智 7

出现同样的错误大约一个小时了,

import CoreData
Run Code Online (Sandbox Code Playgroud)

如果它说超出范围,你就会错过这一行。