Вы делаете это неправильно, я верю.
Вот что я бы сказал пятилетнему ребенку (хотя, если он сможет понять obj / c в 5, я найму его быстро).
Чего ты хочешь достичь?Вы хотите включить будильник или выполнить определенные действия в определенные дни недели?
Он, вероятно, скажет: «Я не знаю», но здесь вы действительно хотите выполнить определенные действия в субботу ивоскресенья.
Для этого вам действительно нужен таймер, который будет работать, например, каждый день или каждый час, или каждую минуту, когда это действительно не имеет значения, таймер будет запускать только действие, которое проверяет,действие не произойдет.
NSTimer* aTimer = [[NSTimer alloc] initWithFireDate:[NSDate date]
interval:3600*24 // every 24 hours for example
target:self
selector:@selector(onTimerTriggered:)
userInfo:nil
repeats:YES];
Теперь вам нужно проверить, какой у нас день недели.Самое главное, что это делается отдельно.
- (void)onTimerTriggered:(id)sender
{
// Create your calendar (gregorian is what you need)
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// Create your components specified to only keep track of the week day of today
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
// now you know which day we are !! (careful in the US, sunday is first day of the week)
int weekday = [weekdayComponents weekday];
// trigger alarm if needed
if (weekday == 3 || weekday == 5) // wednesday or saturday
{ ... } // trigger your alarm instantly or wait until a specific hour it's up to you
}
Итак, подведем итог, разложите вашу проблему на более конкретные действия.Вы хотите, чтобы действие создавало определенные действия в разные дни?
- Проверьте, какой это день недели
- Действие!
NS--CalendarUnit
используется только для разложения конкретной даты на то, что Apple называет NSDateComponents
, но это определенно способ решения проблемы разложения дат Apple, и он не написан на стали для других языков.