removePersistentStore(_ :)不会在Swift中返回Bool

时间:2016-05-29 09:54:25

标签: swift core-data

根据文档,我试图存储removePersistentStore(_:)的返回值,显然是Bool

Doc

我这样使用它:

let removed = try! storeCoordinator.removePersistentStore(store)

但请注意removed只是VoidAlert

与此相关的是什么?我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

  

返回值

     

YES如果商店已被删除,则为NO

NSPersistentStoreCoordinator文档中的

指的是Objective-C签名 方法:

- (BOOL)removePersistentStore:(NSPersistentStore *)store
                    error:(NSError * _Nullable *)error

在Swift中,该方法抛出错误而不是返回一个布尔值:

func removePersistentStore(_ store: NSPersistentStore) throws

以便您可以将其称为

try! storeCoordinator.removePersistentStore(persistentStore)

或更好:

do { 
    try storeCoordinator.removePersistentStore(persistentStore)
} catch let error as NSError {
    print("failed", error.localizedDescription)
}

比较{34}在"使用Swift与Cocoa和Objective-C"参考:

  

如果Objective-C方法的最后一个非块参数是NSError **类型,则Swift将其替换为throws关键字,以指示该方法可能引发错误。
  ...
  如果生成Objective-C方法的错误返回BOOL值以指示方法调用的成功或失败,则Swift会将函数的返回类型更改为Void。