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进行更改,则需要使用它 更新:您可能实际上有两个问题
您是否分配了一个数组并将其分配给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];