使用Swift同步保存在分析中

问题描述:

使用Swift 2.1(Xcode 7.2。)和Parse 1.12.0,我得到一个错误,即在Swift中PFObject.save()不可用。我的代码是:使用Swift同步保存在分析中

let operation = NSBlockOperation {() -> Void in 

     do { 
      let success = try rating.save() 
     } 
     catch let er as NSError { 
      error = er 
     } 
    } 

在PFObject + Synchronous.h,有这样的:

///-------------------------------------- 
#pragma mark - Saving Objects 
///-------------------------------------- 

/** 
*Synchronously* saves the `PFObject`. 

@return Returns whether the save succeeded. 
*/ 
- (BOOL)save PF_SWIFT_UNAVAILABLE; 

/** 
*Synchronously* saves the `PFObject` and sets an error if it occurs. 

@param error Pointer to an `NSError` that will be set if necessary. 

@return Returns whether the save succeeded. 
*/ 
- (BOOL)save:(NSError **)error; 

所以它好像Xcode中不能告诉要使用哪个函数:它应该尝试使用一个处理错误。有没有强制这种方法,或者我不正确地调用该函数?

虽然功能没有标记,以迅速为不可用:

-(BOOL)save:(NSError **)error 

定义为返回一个bool,雨燕实现(抛出)显然不会,所以代码编译的罚款,如果我不期待以获得返回值,即:

let operation = NSBlockOperation {() -> Void in 

     do { 
      try rating.save() 
     } 
     catch let er as NSError { 
      error = er 
     } 
    } 

我现在仍然确定如何确定这一点,而无需试验和错误。

第一个重载标记为Swift不可用,因此它不可见。

第二个过载可用,但是当您发现自己时,它需要try,因为它返回NSError输出参数。 Cocoa中的返回值用于指示操作是否成功。在Swift中,这是通过捕获NSError来处理的。这种行为是在Swift 2.0中引入的(我认为),并记录在here

总之,一个OBJ-C方法

- (BOOL) doSomething:(NSError**)error {} 

映射到以下斯威夫特方法

func doSomething() throws 
+0

我试图找到的ObjectiveC代码是如何映射到斯威夫特的废话,但不能因为某些原因。谢谢 – pickwick