阻止 swift 中从 Objective-c 的转换
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)!)
我不确定您是在问如何在 swift 中编写块,还是我没有完全理解您的问题。但是如果是第一个那么...
(void(^)(type*))callback
变成
callback: (param:type*)->(returnType*)
即
func doSomething(callback:((number:Int)->()))
被称为
doSomething(callback:{number in
print("\(number)")
})
当你定义:
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" 指示的是什么数据类型,所以请在那里定义实际的数据类型
+ (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
})
希望对您有所帮助。
如何将以下块从 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)!)
我不确定您是在问如何在 swift 中编写块,还是我没有完全理解您的问题。但是如果是第一个那么...
(void(^)(type*))callback
变成
callback: (param:type*)->(returnType*)
即
func doSomething(callback:((number:Int)->()))
被称为
doSomething(callback:{number in
print("\(number)")
})
当你定义:
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" 指示的是什么数据类型,所以请在那里定义实际的数据类型
+ (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
})
希望对您有所帮助。