2014-09-24 4 views
0

сейчас я создаю мой NSMutableArray с помощью:как добавить объект в NSMutableArray с помощью макроса

#define ARRAY_OF_ORDER_SOURCE [NSArray arrayWithObjects:DICTIONARY_OF_ORDER_SOURCE_ALL,DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE,DICTIONARY_OF_ORDER_SOURCE_PHYSICAL,DICTIONARY_OF_ORDER_SOURCE_INVOICE,DICTIONARY_OF_ORDER_SOURCE_RECURRING,DICTIONARY_OF_ORDER_SOURCE_SALESVU,DICTIONARY_OF_ORDER_SOURCE_RESERVATION,nil] 

я хочу сделать некоторые вещи, как:

if(somethingIstrue) 
[ARRAY_OF_ORDER_SOURCE addObject:DICTIONARY_OF_ORDER_SOURCE_ALL] 
if(somethingElseIstrue) 
[ARRAY_OF_ORDER_SOURCE addObject:DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE] 

я делаю это, как я нуждаюсь в этом массив во всем моем проекте, у меня это в файле constant.h. Как я могу добиться этого с помощью макроса? Спасибо.

+0

Почему бы вам не добавить категорию в NSMutableArray? –

+0

@ JulianKról спасибо, пожалуйста, дайте мне несколько указателей, не можете найти в google. Мне нужно контролировать структуру этого массива/mutablearray в самой первой точке, потому что она используется в нескольких местах, я могу удалить объект по индексу на нескольких местах , но вместо этого я хочу добавить объекты условно только во время создания. Пожалуйста, помогите мне – Alok

ответ

0

Если вы действительно хотите иметь макрос для этого, у вас может быть multiline macro и поместить туда нужную вам логику. Мне не совсем понятно, чего вы хотите достичь, но вместо макроса я бы предпочел, чтобы категория NSMutableArray возвращала массив или какой-то класс Util.

0

В вашем вопросе есть много чего не так. Во-первых, вы утверждаете, что создаете NSMutableArray, но вы на самом деле создаете NSArray. Затем вы пытаетесь addObject на неизменяемом массиве, который вы не можете сделать.

В вашей линии (примечание я изменил его, чтобы добавить комментарий):

if(somethingIstrue) { 
    // The NSArray isn't assigned to anything and tries to addObject to an NSArray 
    [ARRAY_OF_ORDER_SOURCE addObject:DICTIONARY_OF_ORDER_SOURCE_ALL] 
} 

вы не назначая массив к чему-либо (как я уже отметил, что это не будет работать, потому что он пытается добавить NSArray).

Я думаю, что вы хотите сделать что-то вроде:

NSMutableArray *orderedSource = [NSMutableArray array]; 

if (somethingIsTrue) { 
    [orderedSource addObject:addObject:DICTIONARY_OF_ORDER_SOURCE_ALL]; 
} 

if (somethingElseIsTrue) { 
    [orderedSource addObject:addObject:DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE]; 
} 

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

Если вам нужно последовательно создавать массив на основе набора ограничений, одним из подходов было бы создание класса, который может предоставить вам необходимый вам массив на основе критериев. Или вы можете просто сделать это там, где вам нужно использовать вышеприведенный подход.

Смежные вопросы