Я начинаю с RestKit (у меня есть опыт работы с iOS), и у меня возникают некоторые проблемы с тем, что NSArray не заполнен RKMappingResult. Он заполняется только в фактическом «блоке», но если я вызываю его для доступа в viewDidLoad(), он просто выводит нуль.Restkit - свойство NSArray всегда null
Не могли бы вы посоветовать или предоставить какие-либо советы/ссылки на статьи?
Большое спасибо!
Вот мой код -
-(void) loadData
{
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Venue class]];
[mapping addAttributeMappingsFromDictionary:@{
@"name": @"name", @"location.address" : @"address", @"location.city" : @"city"}];
NSString *urlString = [NSString stringWithFormat:@"https://api.foursquare.com/v2/venues/search?ll=55.903324,-3.171383&categoryId=4bf58dd8d48988d18f941735&client_id=%s&client_secret=%s&v=20130717", kCLIENTID, kCLIENTSECRET];
NSURL *baseUrl = [NSURL URLWithString:urlString];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:nil keyPath:@"response.venues" statusCodes:nil];
NSURLRequest *request = [NSURLRequest requestWithURL:baseUrl];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
//set the array of venues to be the result of what we got back
//NSLog(@"%@", [result array]);
NSArray *venues = [result array];
self.arrayOfVenues = venues; //self.arrayOfVenues is always null when I call it in the other methods
} failure:nil];
[operation start];
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
NSLog(@"%@", self.arrayOfVenues);
}
- (void)viewDidLoad
{
[super viewDidLoad];
//load the venue data
self.title = @"Venues";
[self loadData];
NSLog(@"%@", self.arrayOfVenues);
}
Не уверен, что вы делаете с данными, но если он находится в таблице или что-то еще, просто поместите '[self.tableView reloadData]' в завершение после набора массива. – Stakenborg
Вы, сэр, гений! Вы правы, я использую его в таблице, и мне нужно перезагрузить Data после блока! Спасибо Stakenborg !!! – user2604478
Копирование массива не требуется. Это должно быть просто 'reloadData', которое отсутствовало. – Wain