我是Objective-c的新手,我认为这应该很简单但不知何故我无法弄清楚。
我需要从存储在NSArray中的对象调用一个方法。
Java代码为:myArray[0].getMyValue();
所以我在互联网上看到,在Objective-c中,它应该是这样的:[[myArray objectAtIndex: 0] getMyValue]
。不幸的是,这没有用。
我在互联网上找到了其他解决方案,但都没有。
所以我希望你们能帮助我吗?
更新
我收到这两条错误消息:
答案 0 :(得分:7)
这不起作用,因为Objective-C不知道数组中对象的类型是什么。
幸运的是,Apple在Xcode 7中添加了轻量级泛型,允许您创建类型化数组。这当然只有在你打算在数组中有一种类型的对象时才有效。语法如下所示:
NSArray<NSString *> *stringArray;
如果您计划在数组中包含具有不同类型的对象,则需要将对象强制转换为您的类型,以便能够调用您的方法。这看起来像这样:
[((YourObject *)[myArray objectAtIndex: 0]) getMyValue];
正如@Michael在评论中指出的那样,另一个更好的方法是:
[((YourObject *)myArray[0]) getMyValue];
答案 1 :(得分:3)
对象以id
类型存储在NSArray
中,因此您可以将此对象强制转换为所需的对象类型。例如:
NSNumber *myNumber = (NSNumber *)[NSArray objectAtIndex:0];
[myNumber myMethod];