将.json文件更改为UITableView

时间:2013-05-10 19:32:31

标签: ios objective-c cocoa-touch

定义了原始文件:

#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define kLatestKivaLoansURL [NSURL URLWithString: @"http://www.myurl.com/.json"];

数据取自:

- (void)fetchedData:(NSData *)responseData {

...并分配给每个单元格:

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

要更改正在使用的文件,我试过这个:

- (IBAction)subRedditChange:(id)sender
{
latestKivaLoansURL = [NSURL URLWithString:@"http://reddit.com/r/aww.json"];
[self.tableView reloadData];

}

没有任何反应,.json结构在每个文件中都是相同的,因此fetchedData对两者都有效。

2 个答案:

答案 0 :(得分:2)

#define用于常量,因此您想要使用属性:

@interface YOUR_CLASS
...
@property (strong, monatomic) NSURL *latestKivaLoansURL;
...
@end

然后,最初在您设置时:

self.latestKivaLoansURL = [NSURL URLWithString: @"http://www.myurl.com/.json"];

以后,当你想改变时:

self.latestKivaLoansURL = [NSURL URLWithString: @"http://www.newurl.json"];

然后使用self.latestKivaLoansURL作为请求的网址重新获取您的数据。

答案 1 :(得分:1)

如果您需要在运行时更改url。您必须创建NSUrl的实例变量。

NSURL中定义NSURL *url实例.h。 并在.m文件覆盖viewDidLoad方法中设置url

- (void)viewDidLoad
{
// 
self.url = [NSURL urlWithString: @"http://www.myurl.com/.json"];

}

当你想用其他网址点击时。

- (IBAction)subRedditChange:(id)sender
{
self.url = [NSURL urlWithString: @"http://www.myurl.com/.json"];
//Call Some method that fetch data from webservice 
[self.tableView reloadData];
}