iPad - dataWithContentsOfURL создает исключение NSRangeException при загрузке URL-адреса с данными - PullRequest
1 голос
/ 30 октября 2010

мои корпоративные руководители хотят, чтобы я показывал графические объявления для нашего будущего приложения для iPad.В настоящее время я пытаюсь показать изображение с помощью следующего кода:

- (UIImage *)getAdImage:(NSString *)adName {

NSString *adID = [self getPrivateConfigSettings:adName];
NSString *adUrl =
     [NSString stringWithFormat:[self getPrivateConfigSettings:@"eplanningURL"],
     [self getPrivateConfigSettings:@"eplanningSite"], adID];

NSData *theData =
     [NSData dataWithContentsOfURL:[NSURL URLWithString:adUrl]];

return [UIImage imageWithData: theData];
}

В его нынешнем виде выдается следующее исключение:

Terminating app due to uncaught exception 'NSRangeException', reason:
'*** -[NSCFArray objectAtIndex:]: index (-1( or possibly larger))
beyond bounds (0)'

в строке, где я создаю "theData ".

Однако, когда я проверяю загружаемый URL-адрес (http://ads.us.e -planning.net / eb / 3/9770 / 19e905cdc35ec591? o = i ), в нем есть данныена нем.

PD: Я знаю, что код течет!сейчас я просто хочу найти причину своей ошибки;)

Ответы [ 2 ]

2 голосов
/ 30 октября 2010

Попробуйте вручную установить URL-адрес, например:

- (UIImage *)getAdImage:(NSString *)adName {

NSString *adUrl = @"http://ads.us.e-planning.net/eb/3/9770/19e905cdc35ec591?o=i";

NSData *theData =
     [NSData dataWithContentsOfURL:[NSURL URLWithString:adUrl]];

return [UIImage imageWithData: theData];
}

Если он работает нормально, ваша проблема заключается в получении правильного URL-адреса из getPrivateConfigSettings.

0 голосов
/ 02 ноября 2010

Нашли это! это не имеет ничего общего с URL. Как отмечает notme в своем комментарии, ошибка явно связана не с NSData, а с NSArray.

Оказывается, у меня это в отдельном потоке (так что я могу обновить пользовательский интерфейс, пока я загружаю информацию), и проблема была в другом потоке. Как ни странно, он всегда падал, когда я загружал объект 'theData'. До сих пор я понятия не имею, почему другой поток потерпит крах в этот конкретный момент, но, поскольку у меня плотный график и моя проблема решена, я просто позволю этому уйти. Возможно, позже я еще вернусь к этому и предоставлю правильное объяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...