Ios 使用Swift在解析中同步保存

Ios 使用Swift在解析中同步保存,ios,swift,parse-platform,Ios,Swift,Parse Platform,使用Swift 2.1(Xcode 7.2.)和Parse 1.12.0,我得到一个错误,即PFObject.save()在Swift中不可用。我的代码是: let operation = NSBlockOperation { () -> Void in do { let success = try rating.save() } catch let er as NSError { erro

使用Swift 2.1(Xcode 7.2.)和Parse 1.12.0,我得到一个错误,即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无法判断要使用哪个函数:它应该尝试使用处理错误的函数。是否有办法强制执行此操作,或者我是否错误地调用了该函数?

尽管该函数未标记为swift不可用:

-(BOOL)save:(NSError **)error
定义为返回bool,Swift实现(抛出)显然不返回bool,因此如果我不希望收到返回值,则代码编译良好,即:

 let operation = NSBlockOperation { () -> Void in

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

我现在仍然可以确定,如果没有尝试和错误,我是如何确定这一点的。

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

第二个重载可用,但正如您自己发现的,它需要一个
try
,因为它返回一个
NSError
输出参数。Cocoa中的
BOOL
返回值用于指示操作是否成功。在Swift中,这是通过捕捉
n错误来处理的。这种行为是在(我认为)Swift 2.0中引入的,并且有文档记录

总之,一种Obj-C方法

- (BOOL) doSomething:(NSError**)error {}
映射到以下Swift方法

func doSomething() throws

我试图找到objectiveC代码是如何映射到Swift verbiage的,但由于某种原因无法找到。谢谢