使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。
而Objective-C语言可以在Array数组中放任意类型的objective-c的对象。有两点值得注意,一是只能放指向这个对象的指针,而不能直接放int ,char,double 等等;二是不能放nil。
使用NSArray关键字创建一个不可变的数组,一旦初始化完毕后这个数组的元素是不可以再动态地添加和删除。
[array count] : 得到这个对象数组的长度。
[array objectAtIndex:0]: 传入数组脚标的id 得到数据对象。
[array arrayWithObjects:xx,xx,xx,nil] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用nil,标识为数组定义结束。
+ (id)array
WithObjects
:(id)firstObject, ...; //
nil
terminated
- (int)count;
- (id)objectAtIndex:(int)index; //
NSString *s1=[[myarray objectAtIndex: 0];
- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (NSArray *)sortedArrayUsingSelector:(SEL)aSelector;
- (id)lastObject; // returns nil if there are no objects in the array (convenient)
NSArray *arr=[NSArray arrayWithObjects:@"one xiaowang",@"two xiaoli",@"three xiaotian",nil];
NSLog(@"arr count = %d ,%@",[arr count],[arr objectAtIndex:0]);
遍历数组中对象的方法有两种,一种称为普通遍历;另一种称为快速枚举遍历。
但apple认为前者效率低下且安全性不高,推荐使用后者即快速枚举法。
普通遍历方法
for (int i=0;i<[arr count];i++)
{
NSLog(@"普通遍历:i = %d 时的数组对象为: %@",i,[arr objectAtIndex: i]);
}
快速枚举遍历方法
for (NSObject *object in arr) {
NSLog(@"快速枚举遍历数组对象为: %@",object);
}
动态可变数组的管理方式和不可变数组类似。
NSMutableArray * arr=[NSMutableArray arrayWithCapacity:10];
[arr addObject:@"xiaoli"];
[arr addObject:@"xiaowang"];
[arr addObject:@"xiaotian"];
NSLog(@"arr count = %d ,%@",[arr count],[arr objectAtIndex:0]);
for (int i=0;i<[arr count];i++)
{
NSLog(@"普通遍历:i = %d 时的数组对象为: %@",i,[arr objectAtIndex: i]);
}
[arr removeObjectAtIndex:1];
for (NSObject *object in arr) {
NSLog(@"快速枚举遍历数组对象为: %@",object);
}
字典类的对象是使用方式同数组也类似
主要的方法为
+ dictionaryWithObjectsAndKeys: (id)firstObject, ...;
- (int)count;
- (id)objectForKey:(id)key;
- (NSArray *)allKeys;
- (NSArray *)allValues;
+ (NSMutableDictionary *)dictionary;
- (void)setObject:(id)anObject forKey:(id)key;
- (void)removeObjectForKey:(id)key;
- (void)removeAllObjects;
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"name1",@"key1",@"name2",@"key2",nil];
for (NSString * str_key in [dict allKeys])
{
NSLog(@"key is %@",str_key);
}
for (NSString * str_val in [dict allValues])
{
NSLog(@"value is %@",str_val);
}
NSLog(@"value is %@ at %@",[dict objectForKey:@"key1"],@"key1");
NSMutableDictionary *dict2=[NSMutableDictionary dictionaryWithCapacity:10];
[dict2 setObject:@"name1" forKey:@"key1"];
NSLog(@"dict2 value is %@ at %@",[dict2 objectForKey:@"key2"],@"key2");
[dict2 setObject:@"name2" forKey:@"key2"];
NSLog(@"dict2 value is %@ at %@",[dict2 objectForKey:@"key2"],@"key2");
分享到:
相关推荐
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
### 小结 Objective-C是一种结合了C语言的基础特性和面向对象编程概念的语言,特别适合于开发iOS和macOS应用。通过理解其核心概念,如类、接口、方法、消息发送等,开发者可以高效地构建复杂的应用程序。此外,掌握...
Objective-C中的打印输出主要通过`NSLog`函数完成,其用法类似于C语言的`printf`函数,但是使用`@`符号作为字符串的前缀。 ```objective-c NSLog(@"Hello, World!"); ``` ##### 2. 变量与运算 Objective-C支持多种...
### 小结 《Programming in Objective-C》第四版是一本全面介绍Objective-C编程的书籍,它不仅适合于初学者快速入门,也适用于有一定经验的开发者进一步提高自己的技能。本书从基础语法讲起,逐渐过渡到高级主题,...
在C语言中,字符串字面量的拼接机制类似,只是没有`@`符号,因为C中的字符串字面量本身就是由双引号包围的字符数组: ```c #define API_DOMAIN "www.jb51.net" #define API_SYSTEM "http://" API_DOMAIN "/system/"...
Objective-C的内省(Introspection)是一种强大的编程特性,允许程序在运行时查询和分析对象的特性。这种能力使得开发者能够动态地了解对象的结构和行为,从而编写出更加灵活和适应性强的代码。Objective-C中的内省...
- **小结**: - 总结前几节学习的重点,回顾创建iOS应用的基本步骤。 - **构建应用程序**: - 将前面学到的知识综合运用,构建一个完整的应用程序。 - 包括设计用户界面、定义交互逻辑、实现具体功能等环节。 #...
#### 小结 本书不仅介绍了Swift语言的基础知识,还深入探讨了如何利用Swift和Cocoa Touch框架来构建高质量的iOS应用。作者Matt Neuburg凭借其丰富的经验和深入浅出的讲解方式,为读者提供了一个系统学习iOS开发的...
- **小结**:总结这一阶段学到的关键概念和技能,为接下来的学习做好准备。 #### 构建应用程序结构 - **应用程序开发过程**: - **定义概念**:在开始编码之前,明确应用程序的目标和功能是非常重要的。 - **...
此外,可以设置Parent Entity来指定继承关系,以及Class来指定对应的Objective-C或Swift类。 3. 建立实体间的关系 Core Data支持实体间的关联,如一对一、一对多、多对多关系。例如,可以为`SchoolClass`实体创建一...