Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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/8/swift/17.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
Objective c 目标c到swift块_Objective C_Swift_Objective C Blocks - Fatal编程技术网

Objective c 目标c到swift块

Objective c 目标c到swift块,objective-c,swift,objective-c-blocks,Objective C,Swift,Objective C Blocks,我无法将目标C转换为swift块 你可以在这里看到,但是我没有任何关于objective C的背景知识,所以我不太理解这个代码块,这是代码 - (LinkedStringTapHandler)exampleHandlerWithTitle:(NSString *)title { LinkedStringTapHandler exampleHandler = ^(NSString *linkedString) { UIAlertView *alert = [[UIAler

我无法将目标C转换为swift块 你可以在这里看到,但是我没有任何关于objective C的背景知识,所以我不太理解这个代码块,这是代码

- (LinkedStringTapHandler)exampleHandlerWithTitle:(NSString *)title
{
    LinkedStringTapHandler exampleHandler = ^(NSString *linkedString) {

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:title
                                                       message:[NSString stringWithFormat:@"Handle tap in linked string '%@'",linkedString]
                                                      delegate:nil
                                             cancelButtonTitle:@"Dismiss"
                                             otherButtonTitles:nil, nil];
        [alert show];
    };

    return exampleHandler;
}
你们可以在github上看到这段代码,看看这段代码,我正试图在swift中使用桥接头来使用它。所有的东西我都转换了,但是这行我不懂

LinkedStringTapHandler exampleHandler = ^(NSString *linkedString)
这就是我到目前为止所做的

func exampleHandlerWithTitler(title:NSString)->LinkedStringTapHandler {

          exampleHandler: LinkedStringTapHandler = (linkedString:NSString) -> () {
                 // alert view code here
            }

return exampleHandler (ERROR here Use of unresolved identifier exampleHandler)
}

当Objective-C具有块时,Swift具有功能。因此,这只是知道如何阅读Objective-C块语法的问题-不容易,我知道:

^(NSString *linkedString)
这意味着:“这是一个接受NSString参数的块(不返回任何内容)。”因此,您希望在这里提供一个接受NSString参数(不返回任何内容)的Swift函数

换句话说,LinkedStringTapHandler的定义相当于在Swift中这样说:

typealias LinkedStringTapHandler = (linkedString:NSString) -> ()
因此,在您的代码中,您将形成该类型的函数并返回它:

func f(linkedString:NSString) -> () {
    // do stuff
}
return f

你也可以用匿名函数做同样的事情,但这不是这里也不是那里,真的。

最后这是可行的

func exampleHandlerWithTitler(title:NSString)->LinkedStringTapHandler {

        let  exampleHandler: LinkedStringTapHandler = {(linkedString:String) in {
                 // alert view code here
            }

return exampleHandler 
}

嗯,我尝试了一些方法,但仍然不能真正转换它。我已经告诉你了,根据你问的问题中有限的信息,我要知道的一切。我真的不知道你的代码在做什么,是吗?你隐瞒了那件事。所以我给了你一些工具来解决这个问题。我用这个来查找标签词,但是代码是在objC中,所以我把它转换成swift,除了上面提到的这个func,我做了其他的事情。很抱歉,我是swift的新手,这就是为什么我不能自己弄清楚的原因。@user528432这很酷,但是编辑你的问题以显示你在做什么。如果没有人能看到你的代码,他们就不能帮助你。我们很有帮助,但不是读心术。我在问题中添加了链接