GET请求后更新UITableViewCells

时间:2015-03-14 21:25:47

标签: ios objective-c uitableview

我试图更新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。我怎样才能做到这一点?

0 个答案:

没有答案