Ios NSManagedObjectContext.fetch(:)方法文档中存在不一致

Ios NSManagedObjectContext.fetch(:)方法文档中存在不一致,ios,core-data,Ios,Core Data,在的文档中,在方法定义中,只有一个参数请求,但在描述部分,它说有两个参数请求和错误。为什么不同 错误的意思是,在获取行之前,您指定了一个try-catch块,该块将捕获错误(抛出)。它不是一个参数,因此您必须将其包装在do-catch中,如果您尝试删除try,它将给出一个编译错误 do { let result:[People] = try managedContext.fetch(request) } catch let error as NSError { print

在的文档中,在方法定义中,只有一个参数
请求
,但在描述部分,它说有两个参数
请求
错误
。为什么不同


错误的意思是,在获取行之前,您指定了一个try-catch块,该块将捕获错误(抛出)。它不是一个参数,因此您必须将其包装在do-catch中,如果您尝试删除try,它将给出一个编译错误

do {

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

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

错误的意思是,在获取行之前,您指定了一个try-catch块,该块将捕获错误(抛出)。它不是一个参数,因此您必须将其包装在do-catch中,如果您尝试删除try,它将给出一个编译错误

do {

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

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

这是Objective-C和Swift互操作的结果。Objective-C中的一种常见模式是,如果出现问题,函数可以修改
错误
引用,如果查看该函数的Objective-C声明,您会看到:

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

随着Swift中try/throw/catch的引入,所采用的模式适用于以这种方式声明的函数,即抛出
错误
,而不是使用副作用和修改参数。

这是Objective-C和Swift互操作的结果。Objective-C中的一种常见模式是,如果出现问题,函数可以修改
错误
引用,如果查看该函数的Objective-C声明,您会看到:

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

随着Swift中try/throw/catch的引入,所采用的模式适用于以这种方式声明的函数,即抛出
错误
,而不是使用副作用和修改参数。

将抛出
错误
。描述取自Objective-C API,其中有第二个参数。啊,好的。把
错误
归类为
参数
有点奇怪。它们应该有一个部分专门用于抛出的
error
,就像java处理
exception
时抛出的
error
一样。描述取自Objective-C API,其中有第二个参数。啊,好的。把
错误
归类为
参数
有点奇怪。它们应该只为抛出的
错误
设置一个部分,就像java对
异常
所做的那样,因此
错误
参数并不表示我们需要传递
错误的实例,但它告诉我们需要在
try catch
块中包含对
NSManagedObjectContext.fetch(:)的任何调用。是的,要报告执行特定获取的失败,那么
error
参数并不表示我们需要传入
error的实例,但它告诉我们需要在
try catch
块中包含对
NSManagedObjectContext.fetch(:)的任何调用?是,报告执行特定获取的失败