在我的课堂上,我有一种从 coredata 中提取数据的方法。但我有一个问题:我需要将结果转换为数组,因为那样我就必须在其他类中使用该数组。
方法是:
func loadQuestion() -> NSArray{
let fetchRequest: NSFetchRequest<Questions> = Questions.fetchRequest()
do {
let array = try self.context.fetch(fetchRequest) as NSArray
guard array.count > 0 else { print("[EHY!] Non ci sono elementi da leggere "); return array }
return array
} catch let errore {
print("error FetchRequest")
}
return list
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何转换变量数组?
结果(错误)
编辑:我写这个是因为我想将 fetch 的结果转换为数组,这样你就可以切换到另一个类
fetch 返回一个(可选)数组,因此您所需要做的就是从函数中返回该数组。由于fetch throws您的函数应该或throw至少返回一个可选值,因为获取可能会失败。
在 Swift 中很少需要使用NSArray; 正确键入的 Swift 数组将使您的代码更清晰、更安全。由于 Swift 中的 CoreData 支持泛型,fetch因此将根据您的NSFetchRequest. 即使您从 Objective-C 调用此函数,最好让编译器将 Swift 数组桥接到NSArray您的
最后,你的使用方式guard不正确;array如果它有 0 个项目,您将尝试返回,否则您将返回一些list未在您显示的代码中声明的变量。
func loadQuestion() -> [Questions]? {
let fetchRequest: NSFetchRequest<Questions> = Questions.fetchRequest()
do {
let array = try self.context.fetch(fetchRequest) as [Questions]
return array
} catch let errore {
print("error FetchRequest \(errore)")
}
return nil
}
Run Code Online (Sandbox Code Playgroud)