Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

NSString *const и инициализация им NSURL - Программирование iOS

06.09.2013, 11:52. Просмотров 582. Ответов 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?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2013, 11:52     NSString *const и инициализация им NSURL
Посмотрите здесь:

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

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

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

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

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

Вырезка из NSString или NSMutableString - Программирование iOS
Есть строка NSString, ну или NSMutableString, можно получить любую из них. Нужно получить один символ. Допустим в строка "Информатика",...

Подсчет слов в строке типа NSString - Objective-C
Доброго времени суток.. Я начинающий программист на objective C, поэтому прошу помощи в решение следующей проблемы: Есть переменная S...

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

Не проходит инициализация - Swift
Приветствую! Изучаю урок https://youtu.be/CpIoHPUyu8s по написанию игры, и тут столкнулся с такой пока не очень понятной проблемкой....

Инициализация вью - Программирование iOS
Привет. Небольшой вопросик по обжективу, как из си кода (внизу исходника) инициализировать вьюшку и вызвать метод CallMap #import...

Инициализация в объявлении константных статических (const static) членов-данных класса. - C++
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
06.09.2013, 12:40     NSString *const и инициализация им NSURL #2
Что говорит когда крешится ? urlStr -> Это точно NSString ? Ты уверен ?
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.09.2013, 13:29  [ТС]     NSString *const и инициализация им NSURL #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];
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
06.09.2013, 14:32     NSString *const и инициализация им NSURL #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];
...
}
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.09.2013, 14:34  [ТС]     NSString *const и инициализация им NSURL #5
Круто! Спасибо, zulkis, красивое решение.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
06.09.2013, 15:57     NSString *const и инициализация им NSURL #6
kievkao, пожалуйста, рад, что тысячный мой комментарий оказался более-менее полезен
Yandex
Объявления
06.09.2013, 15:57     NSString *const и инициализация им NSURL
Ответ Создать тему
Опции темы

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