现在NSFetchResultsController和NSFetchRequest是Swift 3中的Generics,初始化中有一些变化。我使用了迁移器(非常好!)并且一切都很好。但是当我尝试使用Swift 2方式检索属性时,应用程序崩溃了。
我已经彻底研究过这个问题。
有很多关于如何初始化NSFetchResultsController和NSFetchRequest的示例,但是在解释检索时,StackOverflow上的各种响应是竞争的或当前不足。 Apple的文档也很清楚但不起作用。
这是我的代码,其中Person是实体:
// MARK: - Initialize Fetch Results
var fetchedResultsController = NSFetchedResultsController<Person>()
func setFetchRequest() -> NSFetchRequest<Person> {
do {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = Giver.fetchRequest()
let fetchResult = try moc?.fetch(fetchRequest)
// CANNOT FIGURE OUT WHAT GOES HERE e.g.
// person.name = fetchResult.first (this does not work)
// person.name = fetchResults (this does not work)
let sortDescriptor = SortDescriptor(key: "names", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
} catch {
print("Error with request: \(error)")
}
return setFetchRequest()
}
// MARK: - Retrieve Fetch Request
func getFetchRequest() -> NSFetchedResultsController<Giver> {
fetchedResultsController = NSFetchedResultsController(fetchRequest: setFetchRequest(), managedObjectContext: moc!, sectionNameKeyPath: nil, cacheName: nil)
return fetchedResultsController
}
目前,没有错误,保存黄色三角形表示尚未使用“fetchResult”。我试图获取一些属性:name:String,age:Int,photo:BinaryData。我该如何检索这些属性?
我意识到Swift 3仍处于测试阶段。只是感到沮丧,经历了源头突破性变化的痛苦。