将Objective-C块转换为Swift块

时间:2015-03-05 15:38:55

标签: ios swift objective-c-blocks

我想将此Objective-C代码转换为Swift。

pieView.layer.transformTitleBlock = ^(PieElement* elem, float percent){
         return [(MyPieElement*)elem title]; 
};

我在Swift中编写了这段代码:

pieView.layer.transformTitleBlock = {(elem:PieElement!,percent:Float) -> String in
            //your stuff
            return MyPieElement(elem.title);
        }

但它并不适合我;请帮忙。

感谢。

3 个答案:

答案 0 :(得分:1)

你误解了演员。

[(MyPieElement*)elem title];

在Objective-C中相当于:

(elem as MyPieElement).title

在斯威夫特。

答案 1 :(得分:0)

您应该返回字符串值而不是MyPieElement对象。 试试它对我有用:

    pieView.layer.transformTitleBlock = {
        elem, percent in
        return elem.title
    }

答案 2 :(得分:0)

关闭的返回值是String,但您返回MyPieElement的实例。我怀疑这就是你想要做的事情:

 pieView.layer.transformTitleBlock = {(elem: PieElement!, percent:Float) -> String in
        return elem.title
 }