[英]Block conversion in swift from Objective-c
如何將以下塊從Objective-C
轉換為Swift
。 我正在使用bridge header
在Swift
使用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.