在我班上我有一种从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
}
我无法弄清楚如何转换变量数组?
结果(错误)
编辑:我写这个是因为我想将fetch的结果转换成 一个数组,所以你可以切换到另一个类
答案 0 :(得分:2)
fetch
返回一个(可选)数组,所以您需要做的就是从函数中返回它。由于fetch
throws
您的函数应该throw
或者至少返回一个可选项,因为提取可能会失败。
在Swift中,很少需要使用NSArray
;正确键入的Swift数组将使您的代码更清晰,更安全。由于Swift中的CoreData支持泛型,fetch
将根据您的NSFetchRequest
自动返回相应的数组类型。即使您从Objective-C调用此函数,最好让编译器将Swift数组桥接到NSArray
最后,您错误地使用了guard
;如果它有0项,你试图返回array
,否则你会返回一些变量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
}