2014-09-24 61 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]; 
} 

你要问自己的是为什么你坚持使用宏的问题?你在这里没有真正的设计/方法,这就是为什么你的想法是分散的。

如果您需要基于一组约束一致地创建一个数组,那么一种方法是创建一个类,它可以根据标准为您提供所需的数组。或者你可以在需要使用上述方法的地方完成。