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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
#1

NSMutableArray - Программирование iOS

05.11.2012, 11:59. Просмотров 1165. Ответов 12
Метки нет (Все метки)

Здравствуйте!

У NSMutableArray есть метод сворачивания объектов\элементов внутри?

Привожу пример:

Парсю хмл такого вида:

Код
<film>
<name>Боевики</name>
<title>Неудержимые</title>
</film>
<film>
<name>Комедии</name>
<title>Маска</title>
</film>
<film>
<name>Боевики</name>
<title>Перевозчик</title>
</film>
Задача на одном View сделать иерархию категорий фильмов. При клике на нужную категорию должны вываливаться все фильмы из этого раздела.

Сейчас получается у меня так:

Боевики
Комедии
Боевики


Нужно:

Боевики
Комедии

Спасибо Надеюсь доступно объяснил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос NSMutableArray (Программирование iOS):

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...

NSMutableArray - Objective-C
не очень втыкнул как цепануть количество элементов есть код NSMutableArray *masiv; ; ; ; ; NSInteger count = ; ...

Как удалить объект из NSMutableArray? - Objective-C
Здравствуйте, у меня возникла неразрешимая проблема. Есть массив NSMutableArray *array, который содержит следующие значения (@&quot;1&quot;, @&quot;2&quot;,...


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

Или воспользуйтесь поиском по форуму:
12
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.11.2012, 12:43 #2
Цитата Сообщение от o1eg_bitrix Посмотреть сообщение
У NSMutableArray есть метод сворачивания объектов\элементов внутри?
Вы себе как это представляете? Массив, сворачивающий объекты внутри? xD Эт как?
Для этих целей используйте NSMutableDictionary, где ключ - это категория фильмов, а содержащийся по ключу массив - сами названия фильмов.
Либо массив массивов.
А еще лучше, и правильнее, создать сущность(читайте объект) типа "Genre", в котором будет массив объектов типа "Movie".

Для парсинга проще, и кстати правильнее с точки зрения самого XML, если Вы этот XML зарефакторите к следующему виду:
XML
1
2
3
4
5
<filmography>
  <film genre = "Боевики">Неудержимые</film>
  <film genre = "Боевики">Перевозчик</film>
  <film genre = "Комедии">Маска</film>
</filmography>
Надеюсь доступно объяснил.

Добавлено через 47 секунд
Кое что поправил. Всегда 1 корневой элемент должен быть.
В Вашем случае Вы это все на жанры можете переделать. Но структура подобной этой должна быть.
1
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
05.11.2012, 12:50  [ТС] #3
Спасибо. Не могу я повлиять на структуру исходного XML. Придеться довольствоваться тем что есть.
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
05.11.2012, 14:14 #4
Да Вы наверное отрывок XML привели... Выше элементы в иерархии есть?
1
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
05.11.2012, 14:24  [ТС] #5
Полностью файл
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" codepage="UTF-8"?>
<data>
<film>
<name>Боевики</name>
<title>Неудержимые</title>
</film>
<film>
<name>Комедии</name>
<title>Маска</title>
</film>
<film>
<name>Боевики</name>
<title>Перевозчик</title>
</film>
</data>
2. Можно тут еще вопрос задать? Что бы темы не плодить:

Если нужно 3 экрана можно три xiba использовать или лучше в storyBoard все 3 расположить?

Добавлено через 6 минут
Или вообще проще в одном xibe расположить эти 3 экрана?
0
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
06.11.2012, 00:02 #6
лично я привык в разных xib файлах размещать вьюшки, да и по-сути это логично, если они относятся к разным вью-контроллерам и ориентироваться проще и проблем в будущем меньше

сториборд выглядит удобно, но не вижу в нем надобности, нету порывов или неудобств с простыми xib
1
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
06.11.2012, 14:05  [ТС] #7
Как подсчитать число вхождений определенной строки в массив?

Массив - app.listArray;

Категорию получаю так:

Objective-C
1
theList = [app.listArray objectAtIndex:indexPath.row];
theList.cat = "Боевики";

Делаю поиск объекта в массиве или сразу пробую удалять:

Objective-C
1
2
3
4
5
[app.listArray containsObject:@"Боевики"]
ИЛИ
[app.listArray containsObject:theList.cat]
ИЛИ удаляю напрямую
[app.listArray removeObject:@"Боевики"];
Не один из методов не выполняется.
Очищение массива полностью отрабатывает без проблем:
Objective-C
1
[app.listArray removeAllObjects];
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
06.11.2012, 16:30 #8
theList какого типа?
Что за проперти cat у него?
1
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
06.11.2012, 18:53  [ТС] #9
NSMutableArray
Строка

Добавлено через 1 час 6 минут
Я пытаюсь даже напрямую удалять из массива не используя theList и cat - не работает
Objective-C
1
[app.listArray removeObject:@"Боевики"];
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
06.11.2012, 19:51 #10
Если theList - NSMutableArray, то получается вообще не пойми что.
Разбирайтесь с иерархией. Ну или назовите все нормально, например как в туториалах в документации Apple, иначе просто не поймешь где что, и нет ни желания, ни возможности помочь.
1
o1eg_bitrix
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
06.11.2012, 22:11  [ТС] #11
Цитата Сообщение от zulkis Посмотреть сообщение
Вы себе как это представляете? Массив, сворачивающий объекты внутри? xD Эт как?
Для этих целей используйте NSMutableDictionary, где ключ - это категория фильмов, а содержащийся по ключу массив - сами названия фильмов.
Либо массив массивов.
А еще лучше, и правильнее, создать сущность(читайте объект) типа "Genre", в котором будет массив объектов типа "Movie".

Для парсинга проще, и кстати правильнее с точки зрения самого XML, если Вы этот XML зарефакторите к следующему виду:
XML
1
2
3
4
5
<filmography>
  <film genre = "Боевики">Неудержимые</film>
  <film genre = "Боевики">Перевозчик</film>
  <film genre = "Комедии">Маска</film>
</filmography>
Надеюсь доступно объяснил.

Добавлено через 47 секунд
Кое что поправил. Всегда 1 корневой элемент должен быть.
В Вашем случае Вы это все на жанры можете переделать. Но структура подобной этой должна быть.
Что-то про сущность (Genre) ничего не нашел на просторах рунета.

NSMutableDictionary в моем случае видимо не подойдет.
Во-первых ключ уникальный в пределах словаря должен быть.

Если я запишу так
Objective-C
1
[arr setObject:@"Неудержимые" forkey:@"Боевики"];
Дальше у меня идут опять "Боевики" и значение ключа уже перезаписывается.
Я бы мог пропустить запись ключа, в словарь, а только писать сам фильм в массив, только как проверить что такой ключ уже есть в словаре, что бы его пропустить? Не нашел метода поиска в словаре.

Вы пишите, что нужно записывать фильмы в массив. Я запишу все названия фильмов в массив, но как узнать/разобрать потом к какому ключу тот или иной фильм относится?

Вы также утверждаете, что структура XML обязательна должна быть изменена.
Просто на основе этой структуры XML уже написаны приложения под Андроид и Windows Phone

Так что структуру менять никак нельзя...

Cпасибо!
0
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
07.11.2012, 01:25 #12
Цитата Сообщение от o1eg_bitrix Посмотреть сообщение
Что-то про сущность (Genre) ничего не нашел на просторах рунета.
имелось ввиду, что бы вы создали свою сущность данного типа и с ней работали
как-то так:
Objective-C
1
2
3
4
5
6
@interface Genre
 
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSMutableArray *movies;
 
@end
инкапсуляция и имплементация уже за вами.

далее app.listArray - массив элементов какого типа?
вы скорее всего неверно пытаетесь их оттуда вытащить
наверное нужно как-то так, если это массив словарей:
Objective-C
1
2
3
NSString *genreName = [[[app.listArray] objectAtIndex:indexPath.row] objectForKey@"name"];
NSString *movieTitle = [[[app.listArray] objectAtIndex:indexPath.row] objectForKey@"title"];
Genre *genre;
и тут каким-то "умным" алгоритмом смотреть или есть такой жанр в базе и если есть, то
Objective-C
1
[genre.movies addObject:@"movieTitle"];
а если этот жанр встречается впервые, то
Objective-C
1
2
genre = [[Genre alloc] init];
[genre.movies addObject:@"movieTitle"];
"умный алгоритм" наверняка уже есть, раз приложение написано и на Android и на WP, либо искать совпадения тупыми вложенными 'foreach'.
1
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.11.2012, 17:14 #13
Цитата Сообщение от Vorona Посмотреть сообщение
либо искать совпадения тупыми вложенными 'foreach'.
Не нужно никогда ничего тупого. Нужно лишь "нормальную иерархию" и for.
0
Yandex
Объявления
07.11.2012, 17:14
Ответ Создать тему
Опции темы

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