现在我正在使用:
创建我的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 :(得分:0)
如果你真的想拥有一个宏,你可以拥有multiline macro并放置你想要的逻辑。我不清楚你想要实现什么,但是我宁愿在NSMutableArray上有一个类别来返回数组或某种类的Util类,而不是宏。
答案 1 :(得分: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];
}
你必须问自己的问题是为什么你坚持使用宏?你在这里没有真正的设计/方法,这就是为什么你的想法分散的原因。
如果您需要根据一组约束一致地创建一个数组,一种方法是创建一个类,它可以根据条件为您提供所需的数组。或者您可以在需要使用上述方法的地方进行操作。