Ios 将Objective-C块转换为Swift块
我想把这个Objective-C代码转换成SwiftIos 将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
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
)。他显然不是,所以我去掉了。