我的“MasterView”() 类中有一个方法,它从 URL 解析 .json 数据,然后用该信息填充表格视图。为了更有条理并将该方法与其他需要的方法组合在一起,我尝试将其移至另一个 NSOject 类,但它不起作用;没有错误,没有例外,表格视图根本不会填充。
这是“大师班”中的原始方法
- (void) fetchPosts:
{
NSError *error;
NSData *responseData = [NSData dataWithContentsOfURL:myURL];
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSArray *objects = [[json objectForKey:@"data"] objectForKey:@"children"];
arr = [[NSMutableArray alloc] init];
for (NSDictionary *object in objects) {
NSString *title = [[object objectForKey:@"data"] objectForKey:@"title"];
//Post is just a random NSObject Class
Post *post = [[Post alloc] init];
post.title = title;
[arr addObject:post];
}
NSLog(@"Called");
[self.tableView reloadData];
}
另一个类中的编辑方法:
- (void) fetchPosts:(NSURL *)myURL withPostArray:(NSMutableArray*)postArr andTableView: (UITableView*)tableView
{
NSLog(@"CAlled");
NSError *error;
NSData *responseData = [NSData dataWithContentsOfURL:myURL];
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSArray *objects = [[json objectForKey:@"data"] objectForKey:@"children"];
postArr = [[NSMutableArray alloc] init];
for (NSDictionary *object in objects) {
NSString *title = [[object objectForKey:@"data"] objectForKey:@"title"];
Post *post = [[Post alloc] init];
post.title = title;
[postArr addObject:post];
}
[tableView reloadData];
}
有效的原始方法称为:[self fetchPosts:];
另一个是:[MyClass fetchPosts:myUrl withPostArray:arr andTableView:self.tableView];
我编辑了一些信息以使其更具可读性,所以如果有任何错误,请告诉我。
MyClass.h:
@interface MyClass : NSObject <UITableViewDelegate, UITableViewDataSource>
在 MasterView 中设置数据源:
//In ViewDidLoad
_delegate = myClass;
self.tableView.dataSource = _delegate;
self.tableView.delegate = _delegate;
//In .h
@property (strong, nonatomic) MyClass *delegate;
当我调用时,我从编译器中什么也得不到[MyClass fetchPosts:myUrl withPostArray:arr andTableView:self.tableView];