"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];
}
他のクラスの Edited メソッド:
- (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:];
もう 1 つは次のとおりです。[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];