用NSArray替换NSMutableArray的内容

时间:2012-03-30 12:42:47

标签: objective-c nsmutablearray nsarray

我正在开发一款需要从服务器检索某些数据的应用。我创建了一个“Server”类来处理所有的通信,并且有一个NSMutableArray * sessionData变量,我想存储来自服务器的数据(顺便说一下,这种方法是否正确?)。

我在NSArray中有数据。我希望NSMutableArray具有相同的NSArray内容,但我没有找到任何方法(sessionData = requestResult)。

(子问题:在使用之前我是否必须以某种方式初始化NSMutableArray?我只使用@property和@synthesize声明它)

5 个答案:

答案 0 :(得分:5)

您尝试过的代码(来自评论)应该有效。它不起作用的原因是您的sessionDatanil

您需要初始化sessionData - 在初始值设定项中将其设置为[NSMutableArray array];那么你的代码

[sessionData removeAllObjects];
[sessionData setArray:result];

将完美运作。您甚至不需要第一行 - 第二行sessionData的内容替换为result的内容。

答案 1 :(得分:4)

尝试这种方式:

sessionData = [result mutableCopy];
[result release];

或者

NSMutableArray *sessionData = [[NSMutableArray alloc] initWithContentsOfArray:result];

答案 2 :(得分:0)

或者,如果你能做到这一点:

NSMutableArray *session = [NSMutableArray arrayWithArray:someArray];

答案 3 :(得分:0)

在你的例子中是这样的:

NSArray *requestData = [[NSArray alloc] initWithObjects:@"3", @"4", @"5", nil];
_sessionData = [[NSMutableArray alloc] initWithArray:requestData];
[requestData release];

NSLog(@"%@", [sessionData objectAtIndex:0]); // 2012-03-30 15:53:39.446 <app name>[597:f803] 3
NSLog(@"count: %d", [sessionData count]); //2012-03-30 15:53:39.449 <app name>[597:f803] count: 3

答案 4 :(得分:0)

<强> 1。这种方法是否正确?

<强> 2。我没有找到任何办法(sessionData = requestResult)

许多人建议您可以使用mutableCopyrequestResult分配给sessionData 或者您可以使用arrayWithArray作为一个答案。

第3。在使用?

之前,我是否必须以某种方式初始化NSMutableArray?

是。如果要更改任何变量,则必须分配内存。