1

我的 .h 文件:

#import <UIKit/UIKit.h>
#import "ServiceConnector.h"

@interface PartnerTableController : UITableViewController <ServiceConnectorDelegate>

@property (nonatomic, retain) IBOutlet NSMutableArray *allPartners;


- (IBAction)download:(id)sender;

@end

我的 .m 文件的一部分:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self download:self];
}

...

- (IBAction)download:(id)sender { //perform get request
    ServiceConnector *serviceConnector = [[ServiceConnector alloc] init];
    serviceConnector.delegate = self;
    [serviceConnector download];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    NSLog(@"count allpartners: %d", [allPartners count]);
    return [allPartners count];
}

问题是numberOfRowsInSection返回 0,因为下载我的 JSON-String、创建一个对象并将其放入 NSMutableArray 需要一段时间allPartners。我可以以某种方式阻止该方法download吗?

更新:allPartners由这种方法填充:

[serviceConnector download];

-(void)download{

    //build up the request that is to be sent to the server
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.bala.com"]];

    [request setHTTPMethod:@"GET"];
    [request addValue:@"getValues" forHTTPHeaderField:@"METHOD"]; //selects what task the server will perform

    //initialize an NSURLConnection  with the request
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if(!connection){
        NSLog(@"Connection Failed");
    }
}
4

1 回答 1

0

当 ServiceConnector 通过委托通知您它拥有您所做的数据时,仅此而已[table reloadData];。同时,您将有一个空表,并且可能会在那里显示一些等待的 HUD 或执行一些逻辑,例如if [allPartners count] is 0 then return count 1 and fill the cell with some special content.

于 2012-12-21T12:12:07.360 回答