我的食谱里有好几个CoreData
。每个配方都有属性prepHour和prepMin。我想通过点击按钮Start Timer开始倒计时。但是可以有几个必须同时工作的计时器(例如每个配方)
我选择了这种方式(可能是错误的):
- 对于计时器,我使用了单例Timers。
- 通过点击我的开始计时器,我调用带有参数的方法(名称、prepHour、prepMin)
- 我的startTimer方法创建计时器并将其放入
NSMutableDictionary
调用方法:
[[Timers sharedTimers] startTimer:self.recipe.name startTimer:self.recipe.prepHour startTimer:self.recipe.prepMin];
在定时器单例中:
- (void)startTimer:(NSString *)timerName startTimer:(NSNumber *)hVal startTimer:(NSNumber *)mVal
{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60.0f target:self selector:@selector(tick:) userInfo:nil repeats:YES];
if ([timer isValid]) {
NSArray *array = [NSArray arrayWithObjects: timer, hVal, mVal, nil];
if (_timerDict == NULL) {
_timerDict = [[NSMutableDictionary alloc] init];
}
[_timerDict setObject:array forKey:timerName];
NSLog(@"%@", _timerDict);
}
}
- (void)stopTimer:(NSString *)timerName
{
NSArray *array = [_timerDict objectForKey:timerName];
NSTimer *timer = [array objectAtIndex:0];
if ([timer isValid]) {
[timer invalidate];
[_timerDict removeObjectForKey:timerName];
}
}
- (void)tick:(NSString *)timerName
{
NSArray *array = [_timerDict objectForKey:timerName];
//NSTimer *timer = [array objectAtIndex:0];
NSInteger hVal = [[array objectAtIndex:1] integerValue];
NSInteger mVal = [[array objectAtIndex:2] integerValue];
NSInteger sVal = 0;
我应该如何为每个计时器使用刻度方法?我希望每个计时器都使用自己的参数(计时器、prepHour、prepMin)调用此方法