访问 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 中的 JSON 数据?