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