Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从Objective-c到swift中的块转换_Ios_Objective C_Swift_Block - Fatal编程技术网

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关键字的信息。