【问题标题】:Block conversion in swift from Objective-c从 Objective-c 快速块转换
【发布时间】:2015-10-26 11:36:44
【问题描述】:

如何将以下块从Objective-C 转换为Swift。我正在使用Swift 中的Objective-C 文件使用bridge header。但是块转换的小混乱

Objective-C 块:

+ (void) while:(id)obj name:(void(^)(type*))callback;

示例输出:

[Sub while:keeper viewControllerChanged:^(NSString* newNickname) {
        NSLog(@"\nVC2- Now screen is in: %@", newNickname);
    }];

如何在swift 中转换?

编辑: Swift 块错误是

Sub.while(obj: AnyObject!, viewControllerChanged: ((String!) -> Void)!)

【问题讨论】:

    标签: ios objective-c swift block


    【解决方案1】:

    当你定义时:

    class func while1(obj:AnyObject, callback name:((newNickname:NSString?) -> Void)) {
    
    
    }
    

    当调用函数时:

    self.while1(self) { (newNickname) -> Void in
    
            print("\nVC2- Now screen is in:" + "\(newNickname)")
        }
    

    编辑:

    好的,那你只是想从 swift 调用它..对..?然后使用这个语句:

    ClassName.while1(obj as AnyObject) { (nickName:String!) -> Void in
    
            print(nickName)
        }
    

    但首先要确保在你的定义语句中“type”表示什么DataType,所以请在那里定义实际的DataType

    + (void)while:(id)obj name:(void(^)(type*))callback;
    

    to --> 例如:

    + (void)while1:(id)obj name:(void(^)(NSString *))callback;
    

    还有一点需要注意的是,while 是内置关键字,如果可能,请不要使用它。

    【讨论】:

    • 我正在使用objective-c 类文件。所以我无法改变黑色的创作。
    • 您可以使用`while` 来使用关键字作为标识符。
    • @CuteAngel 谢谢你的解决方案。
    • @Sulthan 感谢您提供有关 while 关键字的信息。
    【解决方案2】:

    你可以这样调用:

    YourClassName.while2(Yourparameter , name: {(nickName : String) -> Void in
    
        })
    

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      我不确定您是在问如何快速编写块,还是我没有完全理解您的问题。但如果是第一个那么...

      (void(^)(type*))callback
      

      变成

      callback: (param:type*)->(returnType*)
      

      func doSomething(callback:((number:Int)->()))
      

      被称为

      doSomething(callback:{number in 
          print("\(number)")
      })
      

      【讨论】:

        猜你喜欢
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 2014-09-23
        • 2012-03-22
        相关资源
        最近更新 更多