NSNumber、NSArray、等

本文介绍了Objective-C中的基本数据类型与对象操作,包括数值类型、字符串、数组、字典和集合等基础数据结构的创建与使用方法。
#import <Foundation/Foundation.h>
 2 
 3 int main(int argc,const char *argv[]){
 4     @autoreleasepool {
 5         NSNumber *myNumber,*floatNumber,*intNumber,*doubleNumber;
 6         
 7         // 创建 interger 类型对象
 8         intNumber = [NSNumber numberWithInt:1];
 9         NSLog(@"intNumber = %li",[intNumber integerValue]);
10         
11         // 创建 long 类型对象
12         myNumber = [NSNumber numberWithLong:0xababab];
13         NSLog(@"myNumber = %lx",[myNumber longValue]);
14         
15         // 创建  char  类型对象
16         myNumber = [NSNumber numberWithChar:'c'];
17         NSLog(@"myNumber = %c",[myNumber charValue]);
18         
19         // 创建 float 类型对象
20         floatNumber = [NSNumber numberWithFloat:3.14];
21         NSLog(@"floatNumber = %f",[floatNumber floatValue]);
22         
23         // 创建 double 类型对象
24         doubleNumber = [NSNumber numberWithDouble:3.11];
25         NSLog(@"doubleNumber = %lg",[doubleNumber doubleValue]);
26         
27         // 判断两个对象的值是否相等
28         if ([intNumber isEqualToNumber:floatNumber])
29             NSLog(@"intNumber = floatNumber");
30         else
31             NSLog(@"intNumber != floatNumber");
32         
33         // 比较两个对象的值大小
34         if ([intNumber compare:floatNumber] == NSOrderedAscending)
35             NSLog(@"左边的数字小");
36         else
37             NSLog(@"右边的数字小");
38     }
39     return 0;
40 }
复制代码

 

 

  2. 字符串对象

   字符串常量是由一个@的符号和一对双引号括起来的字符序列。例如:@"hello world"。字符常量字符串常量是不同的量,它们的区别主要有以下3种:

    1. 字符是由单引号括起来的,而字符串常量是由@和双引号括起来的。

    2. 字符常量只有一个字符,而字符串常量可以有多个字符。

    3. 字符常量只占一个字节。而字符串常量的字节数是由字符个数加1。  增加的字符个数是结束符'\0'。

  Objective-C 中使用NSString来操作字符串,而不是使用c/c++的char*。它在字符串的前面加一个@符号。比如:@"苹果"。下面通过一个例子来具体表现它在oc中的用法:

  2.1 不可修改的字符串 (NSString)

  

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc,const char *argv[]){
 4     @autoreleasepool {
 5 
 6     // stringWithString 是基于一个字符串创建另外一个字符串对象。
 7     NSString *str1 = @"hello world";
 8     NSString *str2 = [NSString stringWithString:str1];
 9     NSLog(@"str1 = %@ , str2 = %@",str1,str2);
10     
11     // NSString 中提供了格式化字符串的方法 stringWithFormat,oc 中用%@来表示一个字符串的值。
12     NSString *name = @"xiaozhang";
13     NSString *str3 = [NSString stringWithFormat:@"I am %@",name];
14     NSLog(@"str3 = %@",str3);
15     
16     // 在一个字符串的后面新加一个字符串。
17     NSString *guilin = @"guilin";
18     NSString *welcome = [guilin stringByAppendingString:@" welcome you!"];
19     NSLog(@"%@",welcome);
20     
21     // 字符串的比较和判断
22     BOOL isSame = [str1 isEqualToString:@"str3"];
23     if(isSame)
24         NSLog(@"str1 = str2");
25     else
26         NSLog(@"str1 != str2");
27     
28     NSComparisonResult result = [str1 compare:str2];
29     if(result == NSOrderedSame)  //内容相同
30         NSLog(@"str1 == str2");
31     else if(result == NSOrderedAscending) // 左边 小于 右边
32         NSLog(@"str1 < str2");
33     else  //result == NSOrderedDescending // 左边  大于 右边
34         NSLog(@"str1 > str2");
35     
36     // 字符串大小写的转换
37     NSString *str4 = [str1 uppercaseString]; // 转换为大写
38     NSString *str5 = [str1 lowercaseString]; // 转换为小写
39     NSLog(@"str4 = %@,str5 = %@",str4,str5);
40         
41     // 字符串的截取
42     NSString *str6 = [str1 substringToIndex:2];
43     NSLog(@"str6 = %@",str6);
44     
45     // 去除前4个字符串形成新的字符串
46     NSString *str7 = [str1 substringFromIndex:4];
47     NSLog(@"str7 = %@",str7);
48     
49     // 从某个字符串到某个字符串形成的新的字符
50     NSString *str8 = [[str1 substringFromIndex:2] substringToIndex:5];
51     NSLog(@"str8 = %@",str8);
52         
53     NSRange rang = [str1 rangeOfString:@"lo"];
54     NSLog(@"包含字符串开始的位置是%lu,长度是%lu",rang.location,rang.length);
55         
56     if([str1 rangeOfString:@"lo"].location == NSNotFound)
57         NSLog(@"没有找到包含的字符串");
58     else
59         NSLog(@"包含字符串开始的位置是%lu,长度是%lu",rang.location,rang.length");
60     
61     }
62     return 0;
63 }
复制代码

 

  2.2 可修改的字符串 (NSMutableString)

  NSString 本身不允许修改,如果要修改的话,可以使用 NSMutableString,NSMutableString 是 NSString 的子类。所有 NSString 都适用于 NSMutableString ,它提供了附加字符串的方法:

  - (void) appendString: (NSString *) string;

  - (void) appendFormat: (NSSting *)string;

 

  例如:

        NSMutableString *str =[NSMutableString stringWithString:@"Giulin"];

        [str appendString:@"welcome you!"];

 

  3. 数组对象

 

   数组是有序的对象集合,一般情况下,数组中的元素都是相同类型的。类似可变字符串和不可变字符串,也有可变数组和不可变数组。 

 

  3.1 不可变数组 (NSArray)

 

  NSArray 是数组类,在数组的中的元素必须以 nil 结尾。以下举个例子来说明它的具体用法:

  

  

复制代码

#import <Foundation/Foundation.h>

 

int main(int argc,const char *argv[]){

    @autoreleasepool {

        NSArray *array = [NSArray arrayWithObjects:@"zhangsan",@"lisi",@"wangwu",@"zhaoliu",nil];

        

        for(int i ; i < [array count] ; i++)

            NSLog(@"%@",[array objectAtIndex:i]);

        

        if([array indexOfObject:@"xiaoli"] == NSNotFound)

            NSLog(@"xiaoli 不在其中!");

    }

    return 0;

}

 

 
复制代码

 

  3.2 可修改数组 (NSMutableArray)

  NSArray 是静态数组,所以不能往该数组中添加元素,必须使用 NSMutableArray 来动态管理数组。NSMutableArray 是NSArray 的字类。

    

  下面通过具体例子来说明它的具体用法:

  

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc , const char *argv[]){
 4     @autoreleasepool {
 5         NSMutableArray *city = [NSMutableArray arrayWithObjects:@"西安",@"北京",@"上海", nil];
 6         [city addObject:@"深圳"];   // 数组中增加一个元素深圳。
 7         [city removeObject:@"上海"]; // 数组中删除一个元素上海。
 8         [city insertObject:@"桂林" atIndex:1]; // 在第一个元素那里插入桂林。
 9         // [city removeAllObjects]; // 删除所有元素。
10         for(int i ; i < [city count] ; i++)
11             NSLog(@"%@",[city objectAtIndex:i]);
12         
13     }
14     return 0;
15     
16 }
复制代码

  4. 字典对象 (NSDictionary 和 NSMutableDictionary)

  NSDictionary 提供了 “键-值” 对的集合。比如,使用字典类实现学生学号到姓名的存放,编号是一个键(唯一性),姓名是一个值。它的方法有:

  

   下面举个例子来看其具体的应用:

  

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc , const char *argv[]){
 4     @autoreleasepool {
 5         NSDictionary *student = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaohong",@"01",@"xiaoming",@"02",@"xiaoqiang",@"03",nil];
 6         NSLog(@"%@",[student objectForKey:@"01"]); // 查找 01 键对应的值,不存在返回 nil。
 7         NSLog(@"人数:%li",[student count]); // 获得个数。
 8     }
 9     return 0;
10 }
复制代码

 

  同上面介绍的字符串和数组类似,NSDictionary 也是不可修改的字典。可变字典是 NSMutableDictionary,它可以动态的添加和删除元素,它的方法有:

   

   

   下面通过一个具体的例子来简单应用一下:

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 int main(int argc , const char *argv[]){
 4     @autoreleasepool {
 5         NSMutableDictionary *student = [NSMutableDictionary dictionary];
 6         [student setObject:@"xiaohong" forKey:@"01"];
 7         [student setObject:@"xiaoming" forKey:@"02"];
 8         [student setObject:@"xiaodong" forKey:@"03"];
 9         
10         NSLog(@"01: %@",[student objectForKey:@"01"]);
11         NSLog(@"02: %@",[student objectForKey:@"02"]);
12         NSLog(@"03: %@",[student objectForKey:@"03"]);
13         
14     }
15     return 0;
16 }
复制代码

 

  4. 集合对象 (NSSet)  

  

  集合对象是一组单值对象的组合,比如 1 个 包含 1 到 50 个数字的集合。集合对象的操作包括搜索,添加,删除集合中的成员,比较 2 个集合,计算两个集合的交集和并集等。在下面的程序中,演示了一些集合的常用方法。

  

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 @interface NSSet (printInteger)
 4 
 5 - (void)printSet;
 6 
 7 @end
 8 
 9 @implementation NSSet (printInteger)
10 
11 - (void)printSet{
12     for (NSNumber *integer in self){
13         printf("%li",[integer integerValue]);
14     }
15     printf("\n");
16 }
17 @end
18 
19 int main(int argc , const char * argv[]){
20     @autoreleasepool {
21         NSMutableSet *set1 = [NSMutableSet setWithObjects:[NSNumber numberWithInteger:1],[NSNumber numberWithInteger:5],[NSNumber numberWithInteger:3],nil];
22         
23         NSMutableSet *set2 = [NSMutableSet setWithObjects:[NSNumber numberWithInteger:7],[NSNumber numberWithInteger:2],[NSNumber numberWithInteger:4],nil];
24         
25         if([set1 isEqual:set2] == YES) // 比较两个集合是否相等
26             NSLog(@"set1 = set2");
27         else
28             NSLog(@"set1 != set2");
29         
30         if([set1 containsObject:[NSNumber numberWithInteger:2]] == YES) // 判断该集合是否包含某一元素
31             NSLog(@"set1 包含2");
32         else
33             NSLog(@"set1 不包含2");
34         
35         [set1 addObject:[NSNumber numberWithInteger:6]];  // 向集合中添加元素
36         [set1 removeObject:[NSNumber numberWithInteger:6]]; // 删除某个元素
37         
38         [set1 intersectSet:set2];  // 计算2个集合的交集
39         [set1 unionSet:set2]; // 计算2个集合的并集
40         [set1 printSet];
41     }
42     return  0;
43 }
复制代码

 

  5. 枚举访问

  对于数组,字典和集合,Objective-C 提供了枚举方法来访问各个元素,具体方法有两种。

   方法 1:

  

   方法2:

    

  第二种方法简洁,所以经常用第二种方法,一般称第二种方法为快速枚举。下面举一个字典快速枚举的例子:代码定义了一个NSString 类型的对象,用来保存每次取出来的健值,然后基于取出的键,调用字典对象student的objectForKey:方法将 值 也取出来,并打印到控制台上。

  

复制代码
 1  #import <Foundation/Foundation.h>
 2 
 3  int main(int argc , const char *argv[]){
 4         @autoreleasepool {
 5                 NSMutableDictionary *student = [NSMutableDictionary dictionary];
 6                 [student setObject:@"xiaohong" forKey:@"01"];
 7                 [student setObject:@"xiaoming" forKey:@"02"];
 8                 [student setObject:@"xiaodong" forKey:@"03"];
 9     
10                 for(NSString *key in student)  
11                     NSLog(@"%@:%@",key,[student objectForKey:key]);
12     }
13     return 0;
14 }
复制代码
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值