ios - 按开始日期过滤 NSMutableArray 对象
<p><p>我正在开发一个 iOS 应用程序,我有一个 NSMutableArray 对象,对象是具有开始日期和结束日期的事件。
开始日期是时间戳格式,结束日期不是。</p>
<p>我想根据用户输入的日期过滤该数组 (datePicker)。</p>
<p>现在我有这个代码,它部分工作,因为假设一个事件将从 3 月 30 日开始,到 4 月 2 日结束,如果用户输入 3 月 30 日之前的任何日期,那么该事件将出现在我的列表中(没关系)但是如果用户输入让我们说 3 月 31 日,则不会过滤相同的事件,这是错误的,因为该事件直到发生。</p>
<pre><code>if(datePickerInTimeStamp>0)
{
//I know I might use while instead of an if
for (EventObj *_eventObj in eventsList)
{
if(_eventObj.dateDebutTimeStamp>0){
if ( datePickerInTimeStamp <= _eventObj.dateDebutTimeStamp)
;
}
}
}
</code></pre>
<p>我正在考虑将结束日期转换为时间戳并使用某种范围检查。</p>
<p>感谢您的帮助。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我不是 100% 清楚您希望过滤器过滤什么,但这里有一些建议:</p>
<ol>
<li>使用面向对象设计。教您的事件表明它们是否匹配。</li>
<li>使用 NSDate 比较方法 earlyDate: 和 laterDate:</li>
</ol>
<p>我从您的问题中猜测您想要选择在用户选择的日期发生的事件:</p>
<pre><code>// in your class EventObj.m
// answer true if date is between the event start and end
- (BOOL)isOccurringOn:(NSDate *)date {
return ] &&
];
}
</code></pre>
<p>如果您想过滤一些其他对事件来说很自然的方式,例如开始之前、之后开始、之前结束等,这里的 BOOL 回答方法就是这样做的方法。</p>
<p>现在您的 EventObj 做了一些有意义且易于阅读的事情,并且您的循环也更漂亮了:</p>
<pre><code>// get NSDate *selectedDate from user
// using your var names, though the _underscores are strange ...
for (EventObj *_eventObj in eventsList) {
if () {
;
}
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 按开始日期过滤 NSMutableArray 对象,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/15275988/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/15275988/
</a>
</p>
页:
[1]