Ios 从Objective-c到swift中的块转换
如何将以下块从Ios 从Objective-c到swift中的块转换,ios,objective-c,swift,block,Ios,Objective C,Swift,Block,如何将以下块从Objective-C转换为Swift。Am使用Swift中的Objective-C文件,使用bridge header。但在块转换中存在一些小的混乱 目标-C块: + (void) while:(id)obj name:(void(^)(type*))callback; [Sub while:keeper viewControllerChanged:^(NSString* newNickname) { NSLog(@"\nVC2- Now screen is i
Objective-C
转换为Swift
。Am使用Swift
中的Objective-C
文件,使用bridge header
。但在块转换中存在一些小的混乱
目标-C块:
+ (void) while:(id)obj name:(void(^)(type*))callback;
[Sub while:keeper viewControllerChanged:^(NSString* newNickname) {
NSLog(@"\nVC2- Now screen is in: %@", newNickname);
}];
样本输出:
+ (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*)
i、 e
叫做像
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)")
}
编辑:
好吧,那么你只想从斯威夫特那里打电话……对吧。。?然后使用以下语句:
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;
还有一件事需要注意的是,
虽然
内置了关键字,但如果可能,请不要使用它。您可以这样调用:
YourClassName.while2(Yourparameter , name: {(nickName : String) -> Void in
})
我希望这有帮助。我正在使用objective-c类文件。因此,我无法更改黑色创建。您可以使用
`while`
将关键字用作标识符。@CuteAngel感谢您的解决方案。@Sulthan感谢您提供有关while关键字的信息。