資料儲存及檢索是任何程式中最重要的一個操作。 在Objective-C中,通常不會依賴連結串列等結構,因為它會使工作變得複雜。一般使用像NSArray
,NSSet
,NSDictionary
及其可變形式的集合。
NSArray
用於儲存不可變物件陣列,NSMutableArray
用於儲存可變物件陣列。Mutablility
有助於在執行時更改預分配陣列中的陣列,但如果使用NSArray
,只替換現有陣列,並且不能更改現有陣列的內容。
NSArray
的重要方法如下 -
alloc/initWithObjects
? 用於使用物件初始化陣列。objectAtIndex
? 返回指定索引處的物件。count
? 返回物件數量。NSMutableArray
繼承自NSArray
,因此NSArray
的所有範例方法都可在NSMutableArray
中使用
NSMutableArray
的重要方法如下 -
removeAllObjects
? 清空陣列。addObject
? 在陣列的末尾插入給定物件。removeObjectAtIndex
? 這用於刪除objectAt
指定的索引處的物件。exchangeObjectAtIndex:withObjectAtIndex
? 在給定索引處交換陣列中的物件。replaceObjectAtIndex:withObject
? 用Object替換索引處的物件。需要記住,上面的列表只是常用的方法,可以到XCode中檢視各個類,以了解這些類中的更多方法。一個簡單的例子如下所示 -
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [[NSArray alloc]
initWithObjects:@"string1", @"string2",@"string3",nil];
NSString *string1 = [array objectAtIndex:0];
NSLog(@"The object in array at Index 0 is %@",string1);
NSMutableArray *mutableArray = [[NSMutableArray alloc]init];
[mutableArray addObject: @"string"];
string1 = [mutableArray objectAtIndex:0];
NSLog(@"The object in mutableArray at Index 0 is %@",string1);
[pool drain];
return 0;
}
執行上面範例程式碼,得到以下結果:
2018-11-16 04:06:24.683 main[69957] The object in array at Index 0 is string1
2018-11-16 04:06:24.684 main[69957] The object in mutableArray at Index 0 is string
在上面的程式中,可以看到NSMutableArray
和NSArray
之間的簡單區別,並在可變陣列中分配後插入一個字串。
NSDictionary
用於儲存物件的不可變字典,NSMutableDictionary
用於儲存物件的可變字典。
NSDictionary
的一些重要方法如下 -
alloc/initWithObjectsAndKeys
? 使用指定的值和鍵集構造的條目初始化新分配的字典。valueForKey
? 返回與給定鍵關聯的值。count
? 返回字典中的專案數。NSMutableDictionary
繼承自NSDictionary
,因此NSDictionary
的所有範例方法都可以在NSMutableDictionary
中使用。NSMutableDictionary
的重要方法如下 -
removeAllObjects
- 清空字典的條目。removeObjectForKey
- 從字典中刪除給定鍵及其關聯值。setValue:forKey
- 將給定的鍵值對新增到字典中。下面是字典的一個簡單範例 -
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"string1",@"key1", @"string2",@"key2",@"string3",@"key3",nil];
NSString *string1 = [dictionary objectForKey:@"key1"];
NSLog(@"The object for key, key1 in dictionary is %@",string1);
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc]init];
[mutableDictionary setValue:@"string" forKey:@"key1"];
string1 = [mutableDictionary objectForKey:@"key1"];
NSLog(@"The object for key, key1 in mutableDictionary is %@",string1);
[pool drain];
return 0;
}
執行上面範例程式碼,得到以下結果 -
2018-11-16 04:11:49.006 main[100527] The object for key, key1 in dictionary is string1
2018-11-16 04:11:49.007 main[100527] The object for key, key1 in mutableDictionary is string
NSSet
用於儲存不可變的一組不同的物件,NSMutableDictionary
用於儲存一組可變的不同物件。NSSet
的重要方法如下 -
alloc/initWithObjects
- 使用從指定的物件列表中獲取的成員初始化新分配的集合。allObjects
- 返回包含集合成員的陣列,如果集合沒有成員,則返回空陣列。count
- 返回集合中的成員數量。NSMutableSet
繼承自NSSet
類,因此NSSet的所有範例方法都可以在NSMutableSet
中使用。
NSMutableSet
的一些重要方法如下 -
removeAllObjects
? 清空集合的所有成員。addObject
? 如果給定物件尚未成為成員,則將該物件新增到該集合中。removeObject
? 從集合中刪除給定物件。集合的簡單範例如下所示 -
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSSet *set = [[NSSet alloc]
initWithObjects:@"yii", @"bai",@".com",nil];
NSArray *setArray = [set allObjects];
NSLog(@"The objects in set are %@",setArray);
NSMutableSet *mutableSet = [[NSMutableSet alloc]init];
[mutableSet addObject:@"yiibai"];
setArray = [mutableSet allObjects];
NSLog(@"The objects in mutableSet are %@",setArray);
[pool drain];
return 0;
}
執行上面範例程式碼,得到以下結果 -
2018-11-16 04:46:06.667 main[196448] The objects in set are (".com", bai, yii)
2018-11-16 04:46:06.669 main[196448] The objects in mutableSet are (yiibai)