gpt4 book ai didi

Swift3:将参数传递给 NSFetchRequest 方法

转载 作者:行者123 更新时间:2023-12-01 10:33:09 24 4
gpt4 key购买 nike

我在我的项目中使用了通用的 CoreData 查询方法。

func query(table: String, searchPredicate: NSPredicate) -> [AnyObject]
{
let context = app.managedObjectContext

let fetchRequest = NSFetchRequest(entityName: table)

fetchRequest.predicate = searchPredicate

let results = try! context.fetch(fetchRequest)
return results
}

在 Swift 3 中这是行不通的。我在苹果的网站上找到了这个:
func findAnimals() 
{
let request: NSFetchRequest<Animal> = Animal.fetchRequest
do
{
let searchResults = try context.fetch(request)
... use(searchResults) ...
}
catch
{
print("Error with request: \(error)")
}
}

使用 Apple 示例,我如何将 Animal 作为参数传递给方法以使 findAnimals 更通用?

最佳答案

我没有试过这个,但我认为这样的事情会奏效......

func findCoreDataObjects<T: NSManagedObject>() -> [T] {
let request = T.fetchRequest
do
{
let searchResults = try context.fetch(request)
... use(searchResults) ...
}
catch
{
print("Error with request: \(error)")
}
}

您必须使整个函数通用,因此您必须在调用它时告诉它 T 是什么类型。
someObject.findCoreDataObjects<Animal>()

认为 应该可以完成这项工作。不完全确定,因为我自己是泛型的新手:D

关于Swift3:将参数传递给 NSFetchRequest 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com