如何从数组中的对象调用方法?

时间:2015-11-08 14:14:38

标签: ios objective-c

我是Objective-c的新手,我认为这应该很简单但不知何故我无法弄清楚。

我需要从存储在NSArray中的对象调用一个方法。 Java代码为:myArray[0].getMyValue();

所以我在互联网上看到,在Objective-c中,它应该是这样的:[[myArray objectAtIndex: 0] getMyValue]。不幸的是,这没有用。

我在互联网上找到了其他解决方案,但都没有。

所以我希望你们能帮助我吗?

更新

我收到这两条错误消息:

  • 没有已知的选择器实例方法' getMyValue'
  • 发送' id'到不兼容类型的参数' CGFloat' (又名' double')

2 个答案:

答案 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];