2016-05-31 106 views
0

我写的代码类型的值类型 'NSFetchRequest' 没有成员 'performFetch'

var fetchRequest: NSFetchRequest = NSFetchRequest(entityName: "Doctor") 
    fetchRequest.predicate = NSPredicate(format: "id != nil") 



let sortDescriptors: [NSSortDescriptor] = [(NSSortDescriptor.init(key: "distance", ascending: true)), (NSSortDescriptor.init(key: "lastname", ascending: true))] 
fetchRequest.sortDescriptors = sortDescriptors 

var error: NSError? = nil 

//显示错误值 'NSFetchRequest' 没有成员 'performFetch'

var fetchSuccessful: Bool = fetchRequest.performFetch(error) 
+2

NSFetchRequest确实没有这样的方法 –

+0

核心数据是首先要了解和使用技巧。最好掌握一个可行的模板,并坚持这个模板,直到你对它的结构如何以及为何更加舒适。祝一切顺利!! – devim1

回答

1

@MagdalenaDziesińska的更多文档:在你的代码...

var fetchSuccessful: Bool = fetchRequest.performFetch(error) 

“performFetch” 不存在。要处理错误(错误处理),请将其置于'do-try-catch语句'中,例如[NSSortDescriptor] = [(NSSortDescriptor.init(关键: “距离”,上升:真)),(NSSortDescriptor.init(关键: “姓”,上升你的代码...

var fetchRequest: NSFetchRequest = NSFetchRequest(entityName: "Doctor") 
fetchRequest.predicate = NSPredicate(format: "id != nil") 

让sortDescriptors后:true])] fetchRequest.sortDescriptors = sortDescriptors

使用以下do-try-catch语句来捕获任何错误并获取获取请求。

do { 
     let results = try context.executeFetchRequest(request) 
    } catch { 
     print("requesting error") 
    } 

注:要求是,你把你的“fetchRequest”

0

什么你要找的是executeFetchRequest(_:)throws而不是使用服用NSError PARAM。

如果一个Objective-C方法的最后一个非块参数的类型NSError的**,夫特替换它与抛出关键字,以指示该方法可引发错误。如果Objective-C方法的错误参数也是它的第一个参数,则Swift会尝试通过从选择器的第一部分中删除“WithError”或“AndReturnError”后缀(如果存在)来进一步简化方法名称。如果使用生成的选择器声明另一个方法,则方法名称不会更改。 - Using Swift with Cocoa and Objective-C (Swift 2.2) - Error Handling

相关问题