【问题标题】:how to add object in NSMutableArray using macro如何使用宏在 NSMutableArray 中添加对象
【发布时间】:2014-09-24 07:18:37
【问题描述】:

现在我正在使用以下方法创建我的 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 文件中有这个。 我怎样才能使用宏来实现这一点? 谢谢。

【问题讨论】:

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

标签: objective-c macros nsmutablearray


【解决方案1】:

如果你真的想要一个宏,你可以有一个multiline macro 并在那里放置你想要的逻辑。我并不完全清楚你想要实现什么,但我宁愿在 NSMutableArray 上有一个类别返回数组或某种 Util 类,而不是宏。

【讨论】:

    【解决方案2】:

    您的问题有很多问题。对于初学者,您声称您正在创建一个 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];
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多