NSManagedObjectContext.fetch(_ :)方法文档中的不一致

时间:2018-04-12 22:34:18

标签: ios core-data

NSManagedObjectContext.fetch(_:)的文档中,在方法定义中,只有一个参数request,但在说明部分中,它表示有两个参数request和{{1 }}。为什么不同?

enter image description here

2 个答案:

答案 0 :(得分:2)

这是Objective-C和Swift如何互操作的结果。 Objective-C中的一个常见模式是函数在出现问题时修改Error引用,如果你看一下该函数的Objective-C声明,你会看到:

 - (NSArray *)executeFetchRequest:(NSFetchRequest *)request 
                       error:(NSError * _Nullable *)error;

随着Swift中try / throw / catch的引入,已采用的模式是以throw Error方式声明的函数,而不是使用副作用并修改参数。

答案 1 :(得分:1)

错误的意思是在获取行之前指定一个try catch块,它将捕获错误(抛出)它不是一个参数所以你必须把它包装在do-catch中,如果你试过的话删除尝试它会产生编译错误

do {

    let result:[People] = try managedContext.fetch(request)

 }
 catch let error as NSError
 {
   print(error)
 }