Member 12639713 Ответов: 1

Как передать nsarray из класса nsobject в класс View controller?


Я новичок в objective c. Я пытаюсь создать приложение погоды. где я анализировал данные с открытой карты погоды. Я сохранил проанализированные данные в массиве. теперь хочу получить доступ к значению массива из другого класса, но получаю нулевое значение.


Кто-нибудь может мне помочь? Заранее спасибо.

Что я уже пробовал:

вот мой класс nsobject, где я храню данные и пытаюсь отправить их в viewcontroller.

- (void)getCurrentWeather: (NSString *)запрос
{
NSString *const BASE_URL_STRING = @"http://api.openweathermap.org/data/2.5/weather?вопрос=";
NSString *const API_KEY = @"& APPID=35e37cecbd835f3949f6d67cb25b0706";

NSString *weatherURLText = [NSString stringWithFormat:@"%@%@%@",
BASE_URL_STRING, query, API_KEY];
NSURL *weatherURL = [NSURL URLWithString:weatherURLText];

dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:weatherURL];
[самость performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];

});
}


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

NSError* ошибка;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData: responseData options:kNilOptions error: & amp;error];

NSString* cityName = [json objectForKey:@ " name"];

инт currentTempCelsius = (тип int)[[[JSON с помощи метода objectForKey:@"основной"] помощи метода objectForKey:@"темп"] сертификата от его закодированной формы] - ZERO_CELSIUS_IN_KELVIN;
инт maxTemp = (тип int)[[[JSON с помощи метода objectForKey:@"основной"] помощи метода objectForKey:@"temp_max"] сертификата от его закодированной формы] - ZERO_CELSIUS_IN_KELVIN;
инт minTemp = (тип int)[[[JSON с помощи метода objectForKey:@"основной"] помощи метода objectForKey:@"temp_min"] сертификата от его закодированной формы] - ZERO_CELSIUS_IN_KELVIN;
NSString *weatherDescription = [[[JSON с помощи метода objectForKey:@"погода"] objectAtIndex:0] помощи метода objectForKey:@"описание"];

weatherArray = [[NSMutableArray alloc] initWithObjects:cityName, weatherDescription,
[NSString stringWithFormat:@ "%d", currentTempCelsius],
[NSString stringWithFormat:@ "%d", maxTemp],
[NSString stringWithFormat:@ "%d", minTemp], nil];


У меня есть файл NSObject.h как-

@interface WeatherData : NSObject


@property (nonatomic) NSString *weatherDescription;
@property (strong, nonatomic) NSString *currentTemp;
@property (nonatomic) int maxTempCelsius;
@property (nonatomic) int minTempCelsius;
@property (nonatomic, retain) NSMutableArray *weatherArray;

- (void)getCurrentWeather: (NSString *)запрос;

@конец

На мой взгляд контроллер -

.H-файл :

@property (nonatomic, retain) NSMutableArray *weatherResultArray;

.m-файл:

- (void)searchButtonClicked: (UIButton*)отправитель
{

[self. view endEditing:да];
WeatherData *weather = [[WeatherData alloc] init];
[погода getCurrentWeather: _textField. text];
самостоятельно.weatherResultArray = погода.weatherArray;

//temperatureLabel. text = [NSString stringWithFormat:@ " %d°", weather.currentTempCelsius];
}

Я просто хочу показать результаты в UILable.

1 Ответов

Рейтинг:
2

Surya_Narayan

Да, вы получаете null, потому что ваш weatherArray не выделяет и не инициализирует где-либо .
в ViewDidload () попробуйте выделить массив следующим образом :

_weatherArray = [[NSMutableArray alloc]init];