Передача NSArray в качестве параметра? - PullRequest
0 голосов
/ 04 января 2010

Я пытаюсь загрузить данные JSON из делегата NSURLConnection, чтобы отправить массив объектов обратно в табличное представление, которое его вызвало.

Объект делегата инициализируется с callback для отправки обратно на

NSArray *returnArray;
ResultsTableRoot *callback;

Метод обработки JSON

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {      
    [connection release];

    NSString *responseString = [[NSString alloc] initWithData:responseData 
                                                     encoding:NSUTF8StringEncoding];
    [responseData release];

    NSError *error;
    SBJSON *json = [[[SBJSON alloc] init] autorelease];
    returnArray = [json objectWithString:responseString 
                                   error:&error];
    [responseString release];

    //////////////////////////////////////////////
    // Send data back to table view
    [callback resultsArrayReciever:returnArray];
}  

Отсюда нельзя получить доступ к массиву, к таблице я хочу получить информацию, однако метод называется

-(void)resultsArrayReciever:(NSArray *)array {
    // Code executed    
    if(array) {
         // Code never executes, array isnt there
    }
}  

Если у вас есть лучший способ обойти все это, это более чем приветствуется !!

Ответы [ 2 ]

1 голос
/ 04 января 2010

returnArray, вероятно, автоматически выпущен. Попробуйте сохранить / освободить его в ваших методах.

Если оно автоматически выпущено, содержимое будет выпущено в цикле выполнения и, следовательно, исчезнет к тому времени, когда вы захотите получить к нему доступ.

0 голосов
/ 04 января 2010
  1. Проверьте экземпляр NSError, чтобы увидеть, не было ли проблем при десериализации JSON;
  2. Попробуйте сохранить объект:

    NSError *error;
    SBJSON *json = [[SBJSON new] autorelease];
    returnArray = [[json objectWithString:responseString error:&error] retain];
    [responseString release];
    [callback resultsArrayReciever:returnArray];
    [returnArray release];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...