在目标c中从id到class的动态类型转换

DoK*_*DoK 7 objective-c dynamic-typing

我想在Objective C中动态转换并访问实例属性.这里有一个伪代码:

id obj;
if (condition1)
    obj = (Class1*)[_fetchedResults objectAtIndex:indexPath.row];
else
    obj = (Class2*)[_fetchedResults objectAtIndex:indexPath.row];

NSNumber *latitude = obj.latitude;
Run Code Online (Sandbox Code Playgroud)

然后编译器告诉我以下内容: 在'__strong id'类型的对象上找不到属性'latitude'

Class1和Class2都是核心数据实体,并且具有几乎相同类型的属性.在condition1中_fetchedResults返回Class1类型的对象,在condition2中_fetchedResults返回Class2类型的对象.

有人能给我一个如何解决这类问题的提示吗?

谢谢!

Mon*_*olo 6

您可以通过键值编码(KVC)访问属性:

[obj valueForKey:@"latitude"]
Run Code Online (Sandbox Code Playgroud)

  • @ipmcc当然可以,但首先使用`id` :-) (5认同)