我试图更新UITableViewCell
中的未读徽章。因此,我创建了这个方法:
- (void)unreadCounts:(NSArray *)resultarray {
NSInteger count = [self.resultArray count];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"database.sqlite"];
FMDatabase *database = [FMDatabase databaseWithPath:path];
[database open];
for (int i = 0; i < count; i++) {
NSString *id = [[self.resultArray objectAtIndex:i] objectForKey:@"id"];
NSString *stringURL = @"http://example.com";
NSURL *url = [NSURL URLWithString:stringURL];
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [standardUserDefaults objectForKey:@"AccessToken"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request addValue:accessToken forHTTPHeaderField:@"Authorization"];
[request addValue:id forHTTPHeaderField:@"ID"];
//[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response code: %ld", (long)[response statusCode]);
if ([response statusCode] >= 200 && [response statusCode] < 300)
{
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:urlData
options:kNilOptions
error:&error];
NSInteger *unread = [json objectForKey:@"unread"];
NSString *query = [NSString stringWithFormat:@"update unread set unread='%d' where id='%@'", unread, id];
[database executeUpdate:query];
}
}
[self.tableView reloadData];
}
此功能在viewDidLoad
中调用,如下所示:
[self unreadCounts:self.resultArray];
现在发生的事情是,当视图打开时,首先运行此代码。理想情况下,我想要加载视图,在此函数运行完毕后,它会更新UITableViewCell
。我怎样才能做到这一点?