2013年4月28日 星期日
iOS NSMutableArray 與 NSDictionary 產生, 新增, 變更, 列key值, 列舉, 排序
// NSMutableArray with NSDictionary
// alloc init
// alloc initWithObjectsAndKeys
// 產生 NSDictionary,且賦予 value,key(group的概念)
NSMutableArray *MyArray = [[NSMutableArray alloc] init];
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"G97013",@"SN",
@"WeiTing Chen", @"NAME",
@"1976/08/22", @"DATE",
@"文化大學", @"INFO",
nil];
// 將第一筆 NSDictionary 使用 addObject 掛到 (NSMutableArray*)MyArray
[MyArray addObject:dictionary];
NSLog(@" count = %i",MyArray.count);
// 產生第二筆 NSDictionary
dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"G98015",@"SN",
@"Jessica Chen", @"NAME",
@"1978/04/09", @"DATE",
@"夫妻大學", @"INFO",
nil];
// 將第二筆 NSDictionary 使用 addObject 掛到 (NSMutableArray*)MyArray
[MyArray addObject:dictionary];
NSLog(@" count = %i",MyArray.count);
// 產生第三筆 NSDictionary
dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"85017",@"SN",
@"John", @"NAME",
@"1980/11/23", @"DATE",
@"info at objectgraph.com", @"INFO",
nil];
// 將第三筆 NSDictionary 使用 atIndexedSubscript 指定順序為 MyArray.count 掛到 (NSMutableArray*)MyArray
// 因 MyArray.count 尚未使用,此效果同等於 addObject(新增)
[MyArray setObject:dictionary atIndexedSubscript:MyArray.count];
NSLog(@" count = %i",MyArray.count);
// 透過 NSEnumerator 列舉在第三筆(當前筆,與前兩筆都是不同記憶體位置) NSDictionary 的 Key 名稱
// key 的形態使用 id 即可(待瞭解)
NSEnumerator *enumerator = [dictionary keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
NSLog (@"Next key is: %@", key);
}
// 使用 for in 列舉第三筆 NSDictionary 的 value & key
for (NSDictionary *dict in MyArray)
{
for (id key in dict) {
NSLog(@"key: %@ value:%@", key, [dict objectForKey:key]);
}
}
NSLog(@" ------------ ");
// 產生第四筆 NSDictionary
dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"A85017",@"SN",
@"AJohn", @"NAME",
@"A1980/11/23", @"DATE",
@"Ainfo at objectgraph.com", @"INFO",
nil];
// 將第四筆 NSDictionary 使用 atIndexedSubscript 指定順序為 MyArray.count-2 掛到 (NSMutableArray*)MyArray
// 因 MyArray.count-2 已有被使用,此效果同等於 更新資料,實際為改變記憶體指向的位置
[MyArray setObject:dictionary atIndexedSubscript:MyArray.count-2];
NSLog(@" count = %i",MyArray.count);
// 列舉 MyArray 全貌,可與上此列舉比對內容變動
for (NSDictionary *dict in MyArray)
{
for (id key in dict) {
NSLog(@"key: %@ value:%@", key, [dict objectForKey:key]);
}
}
NSLog(@" ------------ ");
// 再準備一筆資料
dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"_85017",@"SN",
@"_John", @"NAME",
@"_1980/11/23", @"DATE",
@"_info at objectgraph.com", @"INFO",
nil];
// 新增掛於 MyArray 最後一筆
[MyArray addObject:dictionary];
NSLog(@" count = %i",MyArray.count);
// 列舉 MyArray 全貌
for (NSDictionary *dict in MyArray)
{
for (id key in dict) {
NSLog(@"key: %@ value:%@", key, [dict objectForKey:key]);
}
}
NSLog(@" ------------ ");
// 透過 NSSortDescriptor , 表示出要以 NAME 這個 key 欄位排序
// 將 MyArray 透過排序條件,結果輸出到 sortedMyArray
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME" ascending:YES selector:@selector(compare:)] ;
NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor];
NSArray *sortedMyArray = [MyArray sortedArrayUsingDescriptors:descriptors];
for (NSDictionary *dict in sortedMyArray)
{
for (id key in dict) {
NSLog(@"key: %@ value:%@", key, [dict objectForKey:key]);
}
}
NSLog(@" ------------ ");
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言