Ios 将Objective-C块转换为Swift块

Ios 将Objective-C块转换为Swift块,ios,swift,objective-c-blocks,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

我想把这个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];
在目标C中,相当于:

(elem as MyPieElement).title

在Swift中。

您应该返回字符串值,而不是MyPieElement对象。 试着让它适合我:

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

闭包的返回值是
字符串
,但返回的是
mypielement
的实例。我怀疑这就是你想要做的:

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

“不工作”是什么意思?如果您能提供您的确切结果/问题,那就更好了。下面的内容对我有用,谢谢(Y)它只相当于第二个选项。第一个选项是创建一个新对象。第二种方法将现有对象强制转换为新类型。没错。我已经添加了第一个选项,以防他在施放原语(即
Int
)。他显然不是,所以我去掉了。