簡體   English   中英

從 Objective-c 快速阻止轉換

[英]Block conversion in swift from Objective-c

如何將以下塊從Objective-C轉換為Swift 我正在使用bridge headerSwift使用Objective-C文件。 但是塊轉換中的小混亂

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)!)

當你定義:

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)
    }

但首先要確保在你的定義語句中“類型”表示什么數據類型,所以請在那里定義實際的數據類型

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

到 --> 例如:

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

還有一兩件事要注意, while在建的關鍵字,請不要如果可能的話使用它。

你可以這樣調用:

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

    })

我希望這會有所幫助。

我不確定您是在問如何快速編寫塊,還是我沒有完全理解您的問題。 但是如果是第一次的話...

(void(^)(type*))callback

變成

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

IE

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

被稱為像

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM