Iphone 向数组中添加字符串

Iphone 向数组中添加字符串,iphone,objective-c,nsstring,nsarray,Iphone,Objective C,Nsstring,Nsarray,我想知道如何将字符串添加到数组中。 我使用了以下方法,但它显示为null 1) [arrData addObject:[NSString stringWithString:strlast]]; 2) [arrData addObject:strlast]; 提前感谢一旦NSArray被创建,您就不能向其添加任何内容。如果要对NSMutableArray进行更改,则需要使用它 更新:您可能实际上有两个问题 需要可变时,使用NSArray而不是NSMutableArray 不初始化数组对象(任何一


我想知道如何将字符串添加到数组中。
我使用了以下方法,但它显示为
null

1) [arrData addObject:[NSString stringWithString:strlast]];
2) [arrData addObject:strlast];

提前感谢

一旦NSArray被创建,您就不能向其添加任何内容。如果要对NSMutableArray进行更改,则需要使用它

更新:您可能实际上有两个问题

  • 需要可变时,使用NSArray而不是NSMutableArray

  • 不初始化数组对象(任何一种)。如果arrData为nil,您可以愉快地发送任意数量的消息。什么也不会发生


  • 您是否分配了一个数组并将其分配给arrData?

    如果它显示为null(nil),您需要确保在尝试添加对象之前在代码中的某个位置设置了
    arrData

    arrData = [[NSMutableArray alloc] init];
    
    另外,
    strlast
    是一个字符串,因此使用第二个示例,第一个示例毫无意义

    [arrData addObject:strlast];
    
    尝试:


    如果使用的是不可变数组,还可以使用arrayByAddingObject:

    arrData = [arrData arrayByAddingObject: strlast];
    

    但是可变数组可能是一个更好的主意。

    如果您的
    arrData
    是一个有效的NSMutableArray,那么您的代码是绝对正确的。您需要提供更多的上下文。(数组创建、对象添加、对象检索等)显示“null”的是什么,您似乎可以(两个选项)您是否检查strlast上的值?@Guy它必须是arrData,因为将nil对象添加到数组会导致异常。arrData是一个NSmutable数组变量,我已声明为extern const,strlast是nsmutablestring,因为他得到
    nil
    (无异常)他的整个数组很可能是
    nil
    (参见bbum/Joe的答案)。
    NSString*string=[[NSString alloc]initWithString:@“我的字符串”]是没有意义的。只要做
    NSString*string=@“我的字符串”为什么
    [[NSMutableArray]保留]?为什么不直接使用
    [[NSMutableArray alloc]init]?只是我键入的第一件事,然后添加了一个保留,我可以更改以防止不必要的自动删除对象。是的,从技术上来说,这并不重要。但对这个也没关系:
    inti=1-1+1。但这有点毫无意义,不是吗?(内部基本相当于
    [[NSMutableArray]retain]
    )。为了时尚,我总是选择不那么臃肿的方式。特别是OP对ObjC来说似乎有点陌生。对于非新手来说,这真的不需要太在意。是的,我同意在你提出我保留数组是多么愚蠢的伟大例子时,我欺骗并编辑了我的评论和答案:),其影响大于int I=1-1+1;阵列必须添加到自动释放池中,跟踪,然后无故释放,比简单的子调用要多出很多cpu周期。自动释放相当便宜,但在
    EXC\u BAD\u ACCESS
    调试(自动释放池延迟代码失败)的情况下,它会增加不必要的复杂性。和
    inti=1-1+1基本上没有开销,因为编译器无论如何都会对其进行优化。;)无论什么(哦,我并不是想骂你和/或以任何方式说你愚蠢。我只是想为OP减少混乱。)祝你愉快,乔。:)
    
    arrData = [arrData arrayByAddingObject: strlast];