访问 NSMutableArray 中的 objectatIndex

Posted

技术标签:

【中文标题】访问 NSMutableArray 中的 objectatIndex【英文标题】:accessing objectatIndex in NSMutableArray 【发布时间】:2011-11-18 12:29:21 【问题描述】:

我想知道下面的行代码在目标C中是否有效

  if (dtDay < [m_array objectAtIndex:m_histCount-1]);

                       OR

  if (dtDay < [m_array objectAtIndex:i+1]);

这里的 m_array 是 NSMutableArray 类型.....

还有 这行代码

NSDate *date = [self getDate];

问候 兰吉特

【问题讨论】:

【参考方案1】:
[m_array objectAtIndex:m_histCount-1]

[m_array objectAtIndex:i+1]

会返回一个对象,你不能用

但是,在您期望一个对象的任何情况下,直接从数组中获取它们都可以。这甚至有效:

if([[[m_array objectAtIndex:i+1] date] timeIntervalSinceDate:[m_array objectAtIndex:m_histCount-1] < 0])

也就是说,如果这些索引返回 NSDate 对象,它就可以工作。

由于数组可以包含任何类型的对象,因此最好确保您获得的对象类型正确。

编辑:

事实证明,您可以将对象与 操作数进行比较,但这没有用。您正在比较它们的指针值,这只是一个非常随机的 id。这确实意味着您的行是有效的,我猜,但不是真的有用。

来源:How to compare objects using operator < or > in Objective-C?

【讨论】:

评论被清除。讨论转移到the chat。【参考方案2】:

您可以将 NSDate 对象与 compare: laterDate: 或 earlyDate: 选择器进行比较

NSComparisonResult result = [date1 compare:date2];
NSDate* earlierDate = [date1 earlierDate:date2];
NSDate* laterDate = [date1 laterDate:date2];

您还可以一次性对整个 NSArray 日期进行排序:

NSArray* sortedDateArray = [dateArray sortedArrayUsingSelector:@selector(compare:)];

行:

NSDate *date = [self getDate];

如果 self 响应 getDate 选择器并返回 NSDate(或子类,这不太可能),则有效。

【讨论】:

以上是关于访问 NSMutableArray 中的 objectatIndex的主要内容,如果未能解决你的问题,请参考以下文章

访问另一个 NSMutableArray 中的对象的 NSMutableArray(即嵌套对象访问)

访问 NSMutableArray 中的 objectatIndex

访问 nsmutablearray xcode 中的图像

如何访问 NSMutableArray 中的 JSON 数据?

从 viewController 访问 NSObject 类中的 NSMutableArray

NSMutableDictionary里面的NSMutableArray如何过滤