将 Objective-C 块转换为 Swift 块

Convert Objective-C block to Swift block

我想将此 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);
        }

但这对我不起作用;请帮忙

谢谢。

你误解了演员表。

[(MyPieElement*)elem title];

在Objective-C中相当于:

(elem as MyPieElement).title

在 Swift.

您应该return 字符串值而不是 MyPieElement 对象。 试试它是否适合我:

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

闭包的 return 值是 String,但您 return 是 MyPieElement 的实例。我怀疑这就是你想要做的:

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