Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
1

NSString *const и инициализация им NSURL

06.09.2013, 11:52. Просмотров 681. Ответов 5
Метки нет (Все метки)

Добрый день!

Что можете посоветовать в такой ситуации:
Разбираю данные после парсинга JSON, получаю на определенном этапе NSArray со string'ами-ссылками, пытаюсь инициализировать ими NSURL и все рушится.
Посмотрел детальней - оказывается, что обычная строка в окне просмотра переменных имеет отображение вида "(NSString *) 0x...", а полученная мною строка после парсинга - "(NSString *const) 0x...".

Objective-C
1
2
for (NSString *urlStr in imgLinks) {
        NSURL *url = [NSURL URLWithString:urlStr];     // тут наступает крэш
Каким образом можно преобразовать такое значение в удобоваримое для инициализации NSURL?
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2013, 11:52
Ответы с готовыми решениями:

NSString в Int
Возможно ли вообще перейти от NSString к Int? Если да, то подскажите, каким...

Преобразование из NSString в BOOL
У меня есть строка NSString *out ; как мне ее преобразовать в BOOL?

Вырезка из NSString или NSMutableString
Есть строка NSString, ну или NSMutableString, можно получить любую из них....

Получить NSString из JSON и использовать его как заголовок в TableView
у меня в JSON файле есть вот такая строчка "titles of sections": мне нужно...

NSURL
Здравствуйте мне нужно выводить ссылку на сайт в *Label не просто текстом, а...

5
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
06.09.2013, 12:40 2
Что говорит когда крешится ? urlStr -> Это точно NSString ? Ты уверен ?
1
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.09.2013, 13:29  [ТС] 3
Цитата Сообщение от Pro2005 Посмотреть сообщение
Что говорит когда крешится ? urlStr -> Это точно NSString ? Ты уверен ?
Хм, знаете, после ваших слов я посмотрел и теперь уже не уверен, что получаю именно строку.. Результат такой:
"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance"
Почему-то речь идет о массиве..
Разбираю данные после парсинга я таким образом (получаю массив словарей),

Objective-C
1
2
3
4
5
6
NSArray *dataObject = [jsonParser objectWithString:result];
  
NSArray* firstNames = [dataObject valueForKey:@"items"];
NSArray* pagemap = [firstNames valueForKey:@"pagemap"];
NSArray* images = [pagemap valueForKey:@"cse_image"];
NSArray* imgLinks = [images valueForKey:@"src"];
Добавлено через 42 минуты
Проблема решена!

Оказалось, несмотря на то, что массив imgLinks представлял собой на первый взгляд единичные элементы, каждый из них являл собой еще один массив.
Сделал следующим образом и стало все хорошо:
Objective-C
1
2
3
for (NSArray *urlArr in imgLinks) {
        NSString* str = [urlArr objectAtIndex:0];
        NSURL *url = [NSURL URLWithString:str];
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
06.09.2013, 14:32 4
Цитата Сообщение от kievkao Посмотреть сообщение
Objective-C
1
2
3
for (NSArray *urlArr in imgLinks) {
* * * * NSString* str = [urlArr objectAtIndex:0];
* * * * NSURL *url = [NSURL URLWithString:str];
Лучше так:
Objective-C
1
2
3
4
5
for (NSArray *urlArr in imgLinks) {
  NSString* str = [urlArr lastObject];
  NSURL *url = [NSURL URLWithString:str];
...
}
А учитывая то, что там "почему-то массив вместо строки", лучше вот так:
Objective-C
1
2
3
4
5
6
7
8
9
10
for (id aObject in imgLinks) {
    NSString* str = nil;
    if ([aObject isKindOfCLass:[NSArray class]]){
      str = [aObject lastObject];
    } else if ([aObject isKindOfCLass:[NSString class]]) {
      str = aObject;
    }
    NSURL *url = [NSURL URLWithString:str];
...
}
1
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.09.2013, 14:34  [ТС] 5
Круто! Спасибо, zulkis, красивое решение.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
06.09.2013, 15:57 6
kievkao, пожалуйста, рад, что тысячный мой комментарий оказался более-менее полезен
0
06.09.2013, 15:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 15:57

Работа с NSArray, NSString
Вообщем программа довольно простая: Есть AddressBook которая хранит название и...

Смена кодировки NSString
ДВС, всем! На ГитХабе нашел парсер HTML (Objective-C-HMTL-Parser ), встроил...

Подсчет слов в строке типа NSString
Доброго времени суток.. Я начинающий программист на objective C, поэтому прошу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru