Iphone 从数据库重新加载TableView数据

Iphone 从数据库重新加载TableView数据,iphone,objective-c,ios,cocoa,Iphone,Objective C,Ios,Cocoa,在我的应用程序中,我通过internet上的php文件从DB获得git dat和表视图中显示的数据,但我需要每分钟重新加载数据,我可以每分钟获取新数据,但我无法在表视图中替换它 1) 你知道怎么做吗 2) 如果你知道如何让我的代码更简单,并删除那些不需要的代码?我会感谢你的 我的ViewController.m #import "ViewController.h" #import "CJSONDeserializer.h" @implementation ViewController @syn

在我的应用程序中,我通过internet上的php文件从DB获得git dat和表视图中显示的数据,但我需要每分钟重新加载数据,我可以每分钟获取新数据,但我无法在表视图中替换它

1) 你知道怎么做吗

2) 如果你知道如何让我的代码更简单,并删除那些不需要的代码?我会感谢你的

我的ViewController.m

#import "ViewController.h"
#import "CJSONDeserializer.h"

@implementation ViewController
@synthesize tblMain, rows;

NSURL *url;
NSString *jsonreturn;
NSData *jsonData;
NSError *error;
NSDictionary *dict;
UITableViewCell *cell;
static NSString *CellIdentifier;

- (void)viewDidLoad{
    [super viewDidLoad];

    [self GetData];
}

-(void)GetData{
    url = [NSURL URLWithString:@"http://ar2.co/savola/"];
    jsonreturn = [[NSString alloc] initWithContentsOfURL:url];
    NSLog(jsonreturn);
    jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    dict = [[[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error] retain];
    rows = [dict objectForKey:@"savola"];
    NSLog(@"Array: %@",rows);
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [rows count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    dict = [rows objectAtIndex: indexPath.row];

    cell.textLabel.text = [NSString stringWithFormat:@"%@ - %@", [dict objectForKey:@"company"], [dict objectForKey:@"price"]];
    cell.detailTextLabel.text = [dict objectForKey:@"time"];

    return cell;
}


@end

要强制表重新加载其信息,请从视图控制器类调用
[self.tableView reloadData]
。这将再次调用所有数据源方法,并更新显示。

若要强制表格重新加载其信息,请从视图控制器类调用
[self.tableView reloadData]
。这将再次调用所有数据源方法,并将更新显示。

从服务器获取新数据后,应重新加载表。与GetData方法类似:

- (void)GetData
{
    url = [NSURL URLWithString:@"http://ar2.co/savola/"];
    jsonreturn = [[NSString alloc] initWithContentsOfURL:url];
    NSLog(jsonreturn);
    jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    dict = [[[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error] retain];
    rows = [dict objectForKey:@"savola"];
    NSLog(@"Array: %@",rows);

   [yourTable reloadData];
}

您应该在从服务器获取新数据后重新加载表。与GetData方法类似:

- (void)GetData
{
    url = [NSURL URLWithString:@"http://ar2.co/savola/"];
    jsonreturn = [[NSString alloc] initWithContentsOfURL:url];
    NSLog(jsonreturn);
    jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    dict = [[[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error] retain];
    rows = [dict objectForKey:@"savola"];
    NSLog(@"Array: %@",rows);

   [yourTable reloadData];
}

您需要使用
reloadData
方法重新加载表视图以显示新数据

但正如你提到的——“但我需要每分钟重新加载数据”

因此,您可以使用现有数据检查接收到的数据,如果新数据中有更改,则只需重新加载表,否则跳过该操作


如果您每隔一分钟不必要地重新加载一次表而不更改数据,则这将是不正确的,并且会减慢应用程序的速度。

您需要使用
重新加载数据
方法重新加载表视图以显示新数据

但正如你提到的——“但我需要每分钟重新加载数据”

因此,您可以使用现有数据检查接收到的数据,如果新数据中有更改,则只需重新加载表,否则跳过该操作


如果你每隔一分钟重新加载一次表而不需要更改数据,这将是不正确的,而且会减慢你的应用程序的速度。

在这种情况下,我建议你考虑使用。它将仅在需要时自动更新表

在这种情况下,我建议您考虑使用。它将仅在需要时自动更新表

执行此操作并添加一个NSTimer以每分钟执行此方法。也要遵循@rishi的建议,并在此方法中完成检查,以了解数据的变化,而不是单纯下载数据。也可以使用网络活动指示器。执行此操作并添加NSTimer以每分钟执行此方法。也要遵循@rishi的建议,并在此方法中完成检查,以了解数据的变化,而不是单纯下载数据。也许也可以使用网络活动指示器。感谢while(1==1){print(Vere);}非常感谢快速回答感谢while(1==1){print(Vere);}非常感谢快速回答