【发布时间】:2015-01-26 10:43:57
【问题描述】:
我有一个uitabbarcontroller,在一个标签内我有一个UIViewcontroller 和一个uitableview。问题是当我切换到另一个选项卡然后再次切换到带有uitableview 的选项卡时,它会自动重新加载。
这是我的代码,我在我的viewWillappear 中调用fetchAppointments:
-(void)fetchAppointments:(NSDate *)startDate andEndDate:(NSDate *)endDate{
Webservice_2 *web = [[Webservice_2 alloc]init];
[web fetchAppointmentsWithStart:startDate andEndDate:endDate onCompletion:^(BOOL finished) {
if(finished){
[self loadData:_strDate];
[HUD hide:YES];
}
}];
}
-(void)loadData:(NSString *)today{
NSDate *start = [NSDate dateWithTimeIntervalSince1970:[today floatValue]];
NSCalendar *calender = [NSCalendar currentCalendar];
NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calender components:units fromDate:start];
components.timeZone = [NSTimeZone localTimeZone];
NSDateComponents *dateComps = [[NSDateComponents alloc]init];
[dateComps setDay:[components day]];
[dateComps setMonth:[components month]];
[dateComps setYear:[components year]];
[dateComps setHour:0];
[dateComps setMinute:0];
[dateComps setSecond:0];
NSDate *startDate = [calender dateFromComponents:dateComps];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offset = [[NSDateComponents alloc] init];
[offset setDay:1];
NSDate *endDate = [calendar dateByAddingComponents:offset toDate:startDate options:0];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"app_start >= %@ AND app_end <= %@",startDate,endDate];
appointments = [[Appointment_2 objectsWithPredicate:predicate]sortedResultsUsingProperty:@"app_start" ascending:YES]; NSLog(@"appointments is %@",appointments);
[tableAppointments reloadData];
}
这是我得到的错误:
*** Terminating app due to uncaught exception 'RLMException', reason: 'Index is out of bounds.'
那是因为在我的CellForRowAtIndexPath 我这样做:
Appointment_2 *appointment = [appointments objectAtIndex:indexPath.row];
额外信息
- 我使用Realm 来存储我的数据。 Appointment_2 是
RLMObject。 - 同样在
fetchAppointmentsWithStart中,我删除了所有对象,然后再次添加它们。
我的问题是为什么我的表格视图会自动重新加载??
提前致谢!!
【问题讨论】:
标签: ios objective-c uitableview uitabbarcontroller realm