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

Objective-C

Войти
Регистрация
Восстановить пароль
 
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
#1

Скобочки) - Objective-C

14.04.2013, 18:30. Просмотров 629. Ответов 8
Метки нет (Все метки)

Доброго времени суток!
Беру данные из интернета паршу их в итоге получается массив, потом я преобразовываю его в NSString:
Objective-C
1
NSString* data_1 = [data description];
Получается строка: (
(
9
)
)
Подскажите пожалуйста как убрать эти скобки? Буду очень благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 18:30     Скобочки)
Посмотрите здесь:

Задачка про скобочки - 1С
всем привет. каочи давно давно решал чета задачку про имеем строку с цыфрами и символами плюс минус умножить. нужно так расставить...

Про скобочки в request, jquery ajax - jQuery
Здравствуйте, пишу ajax запрос для выбора и удаления элементов таблицы: $('#delete').bind('click', function() { ...

Ругается на else из 11 строчки. Где скобочки не хватает или наоборот лишняя?? - C++/CLI WinForms
Ругается на else из 11 строчки. Где скобочки не хватает или наоборот лишняя?? private: System::Void button1_Click(System::Object^ ...

Задача : "Скобочки". - C++
Некоторые скобочные структуры правильные, другие — неправильные. Ваша задача — определить правильная ли скобочная структура. Вход:...

"Скобочки" - Delphi
Хоть убей, но не могу придумать алгоритм к задаче, помогите пожалуйста, третий день над ней думаю и вообще ничего придумать не могу....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
14.04.2013, 19:23     Скобочки) #2
Objective-C
1
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
14.04.2013, 19:24     Скобочки) #3
смотрите, обычно массив в методе description будет представлен так:
Код
(val1, val2, val3, val4)
если использовать такую конструкцию
Objective-C
1
[[array valueForKey:@"description"] componentsJoinedByString:@" "]
то он будет представлен так:
Код
val1 val2 val3 val4
в вашем случае элементом массива является тоже массив, потому что конечный элемент окружен двумя парами скобок, потому даже если и используете вышеуказанную конструкцию, то получите что-то вроде:
Код
val1 (val11, val12, val13) val2 val3 val4
я бы написал рекурсивный метод, который принимает массив и возвращает строку, далее в foreach проходит по каждому элементу массива и выписывает его в строку, которую вернет, если элементом массива является массив, тогда он вызывает сам себя и передает ему этот элемент-массив, а полученное значение добавляет в строку и идет дальше

так вы получите строку из массива, в нужном вам формате и при том, что элементами массива могут быть массивы с любым уровнем вложенноти этих злобных массивов
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
14.04.2013, 19:51  [ТС]     Скобочки) #4
Цитата Сообщение от zulkis Посмотреть сообщение
Objective-C
1
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
Получается пустой объект.....
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
14.04.2013, 20:00     Скобочки) #5
Цитата Сообщение от Novichok2 Посмотреть сообщение
Получается пустой объект.....
просто тут ожидают увидеть объект типа NSData, а у вас, как я понял - NSArray
код должен быть читабельным, а вы своим кодом сбиваете с толку других программистов и получаете не тот ответ

как видите, сами же и пострадали из-за своей оплошности
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
14.04.2013, 20:25  [ТС]     Скобочки) #6
Цитата Сообщение от Vorona Посмотреть сообщение
смотрите, обычно массив в методе description будет представлен так:
Код
(val1, val2, val3, val4)
если использовать такую конструкцию
Objective-C
1
[[array valueForKey:@"description"] componentsJoinedByString:@" "]
то он будет представлен так:
Код
val1 val2 val3 val4
в вашем случае элементом массива является тоже массив, потому что конечный элемент окружен двумя парами скобок, потому даже если и используете вышеуказанную конструкцию, то получите что-то вроде:
Код
val1 (val11, val12, val13) val2 val3 val4
я бы написал рекурсивный метод, который принимает массив и возвращает строку, далее в foreach проходит по каждому элементу массива и выписывает его в строку, которую вернет, если элементом массива является массив, тогда он вызывает сам себя и передает ему этот элемент-массив, а полученное значение добавляет в строку и идет дальше

так вы получите строку из массива, в нужном вам формате и при том, что элементами массива могут быть массивы с любым уровнем вложенноти этих злобных массивов
Могли бы вы дать ссылку на какой-нибудь пример рекурсивного метода? Я что-то сам не могу найти, а с этим первый раз сталкиваюсь.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
14.04.2013, 21:11     Скобочки) #7
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (NSString *)stringFromArray:(NSArray *)array
{
    NSMutableString *arrayString = [NSMutableString string];
    NSString *separator = @", ";
    
    for (id item in array)
    {
        if ([item isKindOfClass:NSArray.class])
        {
            // рекурсивно вызываем метод
            [arrayString appendFormat:@"{%@}%@", [self stringFromArray:(NSArray *)item], separator];
        }
        else
        {
            [arrayString appendFormat:@"%@%@", item, separator];
        }
    }
    
    //ну и подчистим разделители в хвосте
    return arrayString.length > 0 ? [arrayString substringWithRange:NSMakeRange(0, arrayString.length - separator.length)] : arrayString;
}
таким образом из массива:
Objective-C
1
NSArray *array = [NSArray arrayWithObjects:@8, @3, @1, [NSArray arrayWithObjects:@4, [NSArray arrayWithObjects:@7, @"Hello", @"World", nil], @0, nil], @9, @6, @5, [NSArray arrayWithObjects:@2, nil], nil];
получится что-то вроде
Код
8, 3, 1, {4, {7, Hello, World}, 0}, 9, 6, 5, {2}
p.s код на коленке набросал, если что подправите, но должен работать
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
14.04.2013, 21:40  [ТС]     Скобочки) #8
Цитата Сообщение от Vorona Посмотреть сообщение
просто тут ожидают увидеть объект типа NSData, а у вас, как я понял - NSArray
код должен быть читабельным, а вы своим кодом сбиваете с толку других программистов и получаете не тот ответ

как видите, сами же и пострадали из-за своей оплошности
Не не я сконвертировал в NSData
Objective-C
1
NSData* data_1 = [NSKeyedArchiver archivedDataWithRootObject:data];
Всё удачно преобразовалось в NSData
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.04.2013, 06:28     Скобочки) #9
"data - это array". Тьфу блин жесть.
И чтото я вывод видать невнимательно смотрел. Конечно же там не NSData, а NSArray, как уже выше сказал Vorona.
Yandex
Объявления
15.04.2013, 06:28     Скобочки)
Ответ Создать тему
Опции темы

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