2014-09-24 27 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上添加一個類別呢? – 2014-09-24 07:21:04

+0

@JulianKról謝謝你能給我一些指針,找不到google.I必須在第一點控制這個數組/ mutablearray的結構,因爲它在多個地方使用,我可以在多個位置的索引處移除對象,而是我只想在創建時有條件地添加對象。請幫助我 – Alok 2014-09-24 07:41:01

回答

0

如果你真的想有一個宏,你可以有一個multiline macro並放置在那裏你想要的邏輯。我並不完全清楚你想達到什麼目的,但是我寧願在NSMutableArray上有一個返回數組或某種類的Util類的類。

0

你的問題有很多錯誤。對於初學者,你聲稱你正在創建一個NSMutableArray,但你實際上正在創建一個NSArray。然後嘗試在不可變數組上添加對象,這是你不能做到的。

在你行(注意我修改它來添加註釋):

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]; 
} 

你要問自己的是爲什麼你堅持使用宏的問題?你在這裏沒有真正的設計/方法,這就是爲什麼你的想法是分散的。

如果您需要基於一組約束一致地創建一個數組,那麼一種方法是創建一個類,它可以根據標準爲您提供所需的數組。或者你可以在需要使用上述方法的地方完成。