Objective c 如何使用宏在NSMutableArray中添加对象

Objective c 如何使用宏在NSMutableArray中添加对象,objective-c,macros,nsmutablearray,Objective C,Macros,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_SOURC

目前,我正在使用以下方法创建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]
NSMutableArray *orderedSource = [NSMutableArray array];

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

if (somethingElseIsTrue) {
    [orderedSource addObject:addObject:DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE];
}
我这样做是因为我需要在我的整个项目中使用这个数组,我在constant.h文件中有这个数组。 如何使用宏实现此操作??
谢谢。

如果您真的想为此设置一个宏,您可以设置一个宏,并将其放置在您想要的逻辑中。我并不完全清楚您想要实现什么,但我更希望NSMutableArray上有一个类别返回数组或某种类型的Util类返回数组,而不是宏。您的问题有很多问题。首先,您声称您正在创建一个NSMutableArray,但实际上您正在创建一个NSArray。然后尝试在不可变数组上添加Object,但这是无法做到的

在您的行注释中,我对其进行了修改以添加注释:

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

我想你应该做一些类似的事情:

if(somethingIstrue)
[ARRAY_OF_ORDER_SOURCE addObject:DICTIONARY_OF_ORDER_SOURCE_ALL]
if(somethingElseIstrue)
[ARRAY_OF_ORDER_SOURCE addObject:DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE]
NSMutableArray *orderedSource = [NSMutableArray array];

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

if (somethingElseIsTrue) {
    [orderedSource addObject:addObject:DICTIONARY_OF_ORDER_SOURCE_ECOMMERCE];
}
你必须问自己的问题是,为什么你坚持使用宏?你在这里没有真正的设计/方法,这就是为什么你的想法被认为是分散的


如果需要基于一组约束一致地创建数组,一种方法是创建一个类,该类可以根据条件为您提供所需的数组。或者你可以在需要的地方使用上面的方法进行操作。

为什么不在NSMutableArray上添加一个类别呢?@JulianKról谢谢你能给我一些在google上找不到的指针吗?我必须在第一点控制这个数组/mutablearray的结构,因为它在多个地方使用,我可以在多个位置移除索引处的对象,但我只想在创建时有条件地添加对象。请帮助我