位置:首页 > 高级语言 > Objective-C在线教程 > Objective-C 数据存储

Objective-C 数据存储

数据存储和检索是在任何程序中的最重要的。在Objective-C中,我们一般不会依赖于像链表结构,因为它使复杂的工作。相反,我们使用的NSArray,NSDictionary,NSSet及其可变形式等的集合。

NSArray & NSMutableArray

NSArray是用来装不可变的对象数组,NSMutableArray用于容纳一个可变数组对象。

Mutablility有助于改变数组中运行一个预分配的数组,但如果我们使用NSArray 只能更换现有数组,并不能改变现有数组的内容。

NSArray 的重要方法如下:

  • alloc/initWithObjects: 用来初始化一个数组对象。

  • objectAtIndex: 在特定索引allReturns对象。

  • count: 返回的对象的数量

NSMutableArray继承自NSArray,因此NSMutableArray有NSArray 所有实例方法

重要的 NSMutableArray 方法如下:

  • removeAllObjects: 清空数组。

  • addObject: 数组末尾插入一个给定的对象。

  • removeObjectAtIndex: 这是用来删除objectAt 指定索引的对象

  • exchangeObjectAtIndex:withObjectAtIndex: 改变阵列中的对象在给定的索引。

  • replaceObjectAtIndex:withObject: 替换的对象与对象在索引。

我们一定要记住,上述列表只是经常使用的方法,我们可以在我们的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;
}

现在,当我们编译并运行程序,我们会得到以下的结果。

2013-09-29 02:33:23.195 demo[3487] The object in array at Index 0 is string1
2013-09-29 02:33:23.196 demo[3487] The object in mutableArray at Index 0 is string

在上面的程序中,我们已经看到 NSMutableArray 和 NSArray 的一个简单的区别,在这里我们可以插入一个字符串分配后可变数组。

NSDictionary & NSMutableDictionary

NSDictionary 用于容纳一个不可变的对象,字典 NSMutableDictionary 用于容纳一个可变的对象字典。

重要的NSDictionary方法如下

  • alloc/initWithObjectsAndKeys: 初始化一个新分配的字典带构建从指定的集合值和键的条目。

  • valueForKey: 返回与给定键关联的值。

  • count: 返回在字典中的条目的数量。

NSMutableDictionary 继承自 NSDictionary ,因此NSMutableDictionary 实例拥有 NSDictionary 的所有方法

重要的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;
}

现在,当我们编译并运行程序,我们会得到以下的结果。

2013-09-29 02:34:50.528 demo[9135] The object for key, key1 in dictionary is string1
2013-09-29 02:34:50.528 demo[9135] The object for key, key1 in mutableDictionary is string

NSSet & NSMutableSet

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:@"string1", @"string2",@"string3",nil];
   NSArray *setArray = [set allObjects];
   NSLog(@"The objects in set are %@",setArray);
   NSMutableSet *mutableSet = [[NSMutableSet alloc]init];
   [mutableSet addObject:@"string1"];
   setArray = [mutableSet allObjects];
   NSLog(@"The objects in mutableSet are %@",setArray);
   [pool drain];
   return 0;
}

现在,当我们编译并运行程序,我们会得到以下的结果。

2013-09-29 02:35:40.221 demo[12341] The objects in set are (string3, string2, string1)
2013-09-29 02:35:40.222 demo[12341] The objects in mutableSet are (string1)