У меня есть метод в моем классе «MasterView»(), который анализирует данные .json из URL, а затем заполняет представление таблицы информацией. Чтобы быть более организованным и сгруппировать метод с помощью других необходимых методов, я попытался переместить его в другой класс 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;
Im не получая ничего от компилятора, когда я называю [MyClass fetchPosts:myUrl withPostArray:arr andTableView:self.tableView];
Не читая источник, я предполагаю, что какой-то указатель равен нулю, потому что вы его не инициализировали. Или, как предполагает Моханнад, если метод вообще не вызван, скорее всего, вы неправильно указали указатель делегата. –