我正在研究需要從服務器檢索一些數據的應用程序。我創建了一個「服務器」類來處理所有的通信,並有一個NSMutableArray * sessionData變量,我想存儲來自服務器的數據(順便說一下,這種方法是否正確?)。用NSArray替換NSMutableArray的內容
我有一個NSArray中的數據。我希望NSMutableArray擁有與NSArray相同的內容,但我沒有找到任何方法來做到這一點(sessionData = requestResult)。
:
我正在研究需要從服務器檢索一些數據的應用程序。我創建了一個「服務器」類來處理所有的通信,並有一個NSMutableArray * sessionData變量,我想存儲來自服務器的數據(順便說一下,這種方法是否正確?)。用NSArray替換NSMutableArray的內容
我有一個NSArray中的數據。我希望NSMutableArray擁有與NSArray相同的內容,但我沒有找到任何方法來做到這一點(sessionData = requestResult)。
:
嘗試這種方式(subquestion?我必須在使用前以某種方式初始化NSMutableArray裏,我只用@property和@synthesize宣佈它):
sessionData = [result mutableCopy];
[result release];
或者
NSMutableArray *sessionData = [[NSMutableArray alloc] initWithContentsOfArray:result];
您嘗試的代碼(來自評論)應該已經工作。它沒有工作的原因是您的sessionData
是nil
。
您需要初始化您的sessionData
- 在初始化程序中將其設置爲[NSMutableArray array]
;那麼你的代碼
[sessionData removeAllObjects];
[sessionData setArray:result];
將完美工作。您甚至不需要第一行 - 第二個將sessionData
的內容替換爲的內容與result
的內容。
謝謝。這段代碼是否適合初始化它(從我的類的init方法)? self> sessionData = [[NSMutableArray alloc] init]; – 2012-03-30 12:55:33
@anthmad是的,這個初始化代碼應該工作。如果你不在ARC,考慮分配給一個財產,而不是它支持伊娃;如果你在ARC上,那沒關係。 – dasblinkenlight 2012-03-30 12:57:40
或者,如果你能做到這一點:
NSMutableArray *session = [NSMutableArray arrayWithArray:someArray];
在您的例子是這樣的:
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
sessionData是我需要從其他方法訪問的屬性。你的代碼將創建一個本地可變數組? – 2012-03-30 13:06:11
你有一點,發佈是更新:) – h4cky 2012-03-30 13:11:33
1是這種做法是否正確?
是的。
2.我沒有找到任何方式做到這一點(sessionData = requestResult)
正如許多人建議你可以使用mutableCopy
分配requestResult
到sessionData
或者你可以使用arrayWithArray
作爲一個答案提示。
3.我必須在使用前以某種方式初始化NSMutableArray嗎?
是的。如果你正在改變任何變量,它必須分配內存。
我試過這個,但沒有工作:[sessionData removeAllObjects]; [sessionData setArray:result]; – 2012-03-30 12:44:05