使用自定义对象ios键入Cast

时间:2014-09-19 16:03:28

标签: ios objective-c casting

我有一个数组可能有"主题"课程或"语言"类。现在我手动将我的方法类型转换为Theme类。我想检查If数组是否具有Theme类的对象,然后使用Theme

键入它
    cell.textLabel.text = [NSString stringWithFormat:@"%@",[(Theme *)[_listArray objectAtIndex:indexPath.row] name]];

_listArray也可以是Language Class的对象。

我已经完成了

Class theClass  = [[_listArray firstObject] class];

    cell.textLabel.text = [NSString stringWithFormat:@"%@",[(theClass *)[_listArray objectAtIndex:indexPath.row] name]];

但它不起作用...... !!! 我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:1)

首先,在向id发送消息NSArray之前,不必将name中存储的强制cell.textLabel.text = [NSString stringWithFormat:@"%@",[[_listArray objectAtIndex:indexPath.row] name]]; 对象输入到特定类型。这也将编译:

name

但是,如果相应的元素没有响应选择器NSObject *item = [_listArray objectAtIndex:indexPath.row]; if ([item respondsToSelector:@selector(name)]) { cell.textLabel.text = [NSString stringWithFormat:@"%@",[item name]]; } ,则会遇到运行时问题。方法如下:

{{1}}