如何将 Objective-C 的完成块转换为 Swift?

Posted

技术标签:

【中文标题】如何将 Objective-C 的完成块转换为 Swift?【英文标题】:How to convert completion block of Objective-C to Swift? 【发布时间】:2015-06-06 19:47:29 【问题描述】:

我尝试将 Objective-C 块语法转换为 Swift Xcode 6.3.2

完成块类型定义:

typealias CompletionWithBoolBlock = (Bool, NSError, NSString) -> Void

[Model insertObjectWithTable:@"tblStudent" values:dict completion:^(BOOL success, NSError *responseError, NSString *object)
        
        if(success)
            NSLog(@"inserted");
        
        else
        
             NSLog(@"Not inserted, %@",responseError.description);
        
    ];

在网上冲浪后,我尝试了

    Model.insertObjectWithTable("tblStudent", values: dict, completion:((success:Bool,responseError:NSError, object:NSString)->(Void) in
        
        if success
            
                println("inserted")
            
            else
            
                 println("Not inserted \(responseError.description)")
            
        )

    Model.insertObjectWithTable("tblStudent", values: dict, completion:(success:Bool,responseError:NSError, object:NSString)->Void
        
        if success
            
                println("inserted")
            
            else
            
                 println("Not inserted \(responseError.description)")
            
        )

但它显示错误

预期的 ',' 分隔符

表达式列表中的预期表达式

【问题讨论】:

【参考方案1】:

你试过了吗

Model.insertObjectWithTable("tblStudent", values: dict, completion:(success:Bool, responseError:NSError, object:NSString) -> Void in
    if success 
        println("inserted")
     else 
        println("Not inserted \(responseError.description)")
    
)

【讨论】:

以上是关于如何将 Objective-C 的完成块转换为 Swift?的主要内容,如果未能解决你的问题,请参考以下文章

将objective-c面向块的api转换为android

如何在objective-c中将字节值转换为int

将 Objective-C 方法转换为 Swift [关闭]

如何在objective-c ios中等待完成块完成[重复]

IOS/Objective-C:从完成块中检索 NSArray

Objective-C 顺序执行两个完成块