美文网首页
Objective-C实训(四)

Objective-C实训(四)

作者: 无厘小阿先_ | 来源:发表于2017-08-21 16:26 被阅读0次

练习与示例:

1.数组相关概念

数组:OC中的数组只能存储对象类型,不能存数int,float这些基本类型
不可变数组:不能改变元素个数

2.创建一个不可变数组

    NSArray *array = [[NSArray alloc]initWithObjects:@"温强", @"额尔敦", @"mc海杰", nil];
    NSArray *array1 = [[NSArray alloc]initWithObjects:@"1", @"2", @"3", nil];
    NSArray *array2 = @[@"a", @"b", @"c"];

3.数组元素个数

    NSLog(@"%ld",array.count);

4.从数组取出索引位置的对象

    NSLog(@"%@", [array1 objectAtIndex:0]);
   //字面量形式,与上面方法等价
    NSLog(@"array中索引值为0处的元素:%@", array2[0]);
    if ([array containsObject:@"mc海杰"]) {
            NSLog(@"包含");
        } else {
            NSLog(@"不包含");
        }

5.根据对象取索引值

    NSLog(@"%ld", [array indexOfObject:@"mc海杰"]);

6.将一个字符串分割

    NSString *string = @"自己手动写一个域名";
    NSArray *resultArr = [string componentsSeparatedByString:@"."];
    NSLog(@"%@", resultArr);

7.将数组中的字符串合并

    NSArray *arr = @[@"北京", @"大连", @"上海", @"南京"];
    NSString *resultStr = [arr componentsJoinedByString:@" "];
    NSLog(@"%@", resultStr);

8.存在如下的字符串,将其中的图片的网址提取出来

    NSString *str = @"一个网址.jpg";
    NSArray *result = [str componentsSeparatedByString:@"&"];
    NSLog(@"%@", result);

9.有如下一个数组,@[@“type = iOS", @"Device = iPhone", @"count = 随便输入一个网址", @"password = 12345”],将其中的内容用”&"符号拼接成一个字符串

    NSArray *array3 = @[@"type = iOS", @"Device = iPhone", @"count = 随便输入一个网址", @"password = 12345"];
    NSString *arrayr = [array3 componentsJoinedByString:@"&"];
    NSLog(@"%@",arrayr);

10.可变数组

    NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"温强", @"额尔敦", nil];
    //字面量创建方式(不可变数组拷贝一份可变的副本)
    NSMutableArray *mutableArray1 = [@[@"温强", @"额尔敦"]mutableCopy];
    //由一个已知的数组创建另一个数组
    NSMutableArray *mutableArray2 = [NSMutableArray arrayWithArray:mutableArray];
    //添加一个元素(在数组的末未添加)
    [mutableArray addObject:@"额尔敦"];
    NSLog(@"%@", mutableArray);
    //插入一个元素
    [mutableArray insertObject:@"苏乐" atIndex:1];
    NSLog(@"%@", mutableArray);
    //移除一个对象(根据内存地址判定)
    [mutableArray1 removeObject:@"额尔敦"];
    NSLog(@"%@", mutableArray1);

    [mutableArray2 removeLastObject];
    //通过索引位置移除
    [mutableArray1 removeObjectAtIndex:0];
   //清空数组
   [mutableArray1 removeAllObjects];
   //修改某索引处的元素内容
   mutableArray1[0] = @"张三";
   NSLog(@"%@",mutableArray1);

11.向数组中添加三个名字;
从数组中查找指定的名字,并且用另一个名字替换改名字;
删除指定名字。

    NSMutableArray *arrayl = [NSMutableArray arrayWithObjects:@"张三", nil];
     [arrayl addObject:@"李四"];
     [arrayl addObject:@"王五"];
     [arrayl addObject:@"赵六"];
     if ([arrayl containsObject:@"赵六"]) {
          NSInteger index = [arrayl indexOfObject:@"赵六"];
          [arrayl replaceObjectAtIndex:index withObject:@"小刘子"];
          NSLog(@"%@",arrayl);
     }
     [arrayl removeObject:@"张三"];
     NSLog(@"%@",arrayl);

12.创建一个字典(key和value要求都是对象类型,key通常都是字符串,且key是唯一的,不允许出现两个相同的key)

     NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"温强", @"name", @"99", @"age", nil];
     NSString *name = [mutableDictionary objectForKey:@"name"];
     //字典取值(字面量写法)
     NSString *name1 = mutableDictionary[@"name"];
     NSLog(@"%@",name);
     NSLog(@"%@",name1);
        
     NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
     NSArray *array4 = @[@"温强", @"额尔敦", @"mc海杰"];
     for (NSString *key in array4) {
           NSString *name = [dictionary objectForKey:key];
           NSLog(@"%@",key);
           NSLog(@"%@",name);
     }

作业:

实现图书管理系统:
1、定义书籍Book类,含有属性name,price,author
2、使用数组管理所有书籍对象。
3、管理系统含有1.添加书籍、2.查找书籍(根据书名查找)
4、用户根据控制台提示选择功能:
输入1开始添加书籍,然后根据控制台提示依次输入书名,价格和作者,生成新的book对象,添加到数组中,控制台提示用户添加成功;
输入2提示用户输入要查找的书籍名称,然后控制台打印该书籍的名称,价格,作者信息;
提示:由c语言字符串生成一个OC字符串对象方法:
char name[50];
printf("请输入名称:");
scanf("%s", name);
NSString *nameStr = [NSString stringWithUTF8String:name];

  • 新建一个Book类,在.h中新建用到的属性:
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) CGFloat price;
//@property (nonatomic, retain) NSString *price;
@property (nonatomic, retain) NSString *author;
  • 在主函数中导入头文件:
#import "Book.h"
  • 在主函数中实现:
    //创建一个空数组
    NSMutableArray *bookArray = [NSMutableArray array];
    //遍历五本书
    for (int i = 0; i < 5; i++) {
         Book *book = [[Book alloc]init];
         book.name = [NSString stringWithFormat:@"book%d", i];
         book.price = i * 10;
         book.author = [NSString stringWithFormat:@"author%d", i];
         //把五本书装在数组中
         [bookArray addObject:book];
     }
        
     //回到功能选择页面
     while (YES) {
         NSLog(@"1.添加书籍:\n2.查找书籍:\n");
         printf("请输入数字选择功能:");
         int caseNumber = 0;
         scanf("%d",&caseNumber);
            
     switch (caseNumber) {
         case 1:
         {
             //char型数据接收
             char name[50];
             CGFloat price;
             char author[50];
             printf("请输入书籍名称:");
             scanf("%s",name);
             printf("请输入书籍价格:");
             scanf("%lf",&price);
             printf("请输入书籍作者:");
             scanf("%s",author);
                    
             Book *book = [[Book alloc]init];
             book.name = [NSString stringWithUTF8String:name];
             book.price = price;
             book.author = [NSString stringWithUTF8String:author];
             [bookArray addObject:book];
             NSLog(@"添加成功");
            }
          break;
                    
          case 2:
          {
             char name[50];
             printf("请输入要查找的书籍名称:");
             scanf("%s", name);
             NSString *searchName = [NSString stringWithUTF8String:name];
             BOOL flag = YES;
             for (int i = 0; i < bookArray.count; i++) {
                  Book *book = bookArray[i];//拿到book
                  if ([book.name isEqualToString:searchName]) {
                         NSLog(@"书籍的名称是:%@,书籍的价格是:%f,书籍的作者是:%@",book.name,book.price,book.author);
                         flag = NO;
                  }
             }
             if (flag) {
                  NSLog(@"没有搜索到结果");
             }

         }
         break;
                    
         default:
         break;
         }          
}

知识点:

1.使用苹果帮助文档

1️⃣帮助文档的作用:帮助开发者快速了解系统类的功能。
2️⃣学会使用苹果帮助文档是开发者的一项技能。
3️⃣文档基本信息:
  Inherits from 继承关系 。
  Conforms to 遵循什么协议。
  Framework 属于哪个框架。
  Availability 什么时候可用的。
  Declared in 声明在什么头文件里。
  Related documents 相关文档。
  Sample code 示例代码。
//快速打开帮助文档
在代码中,将鼠标停留在 类名或者方法名上,option+鼠标左键,点击Reference的超链接进入帮助文档。
也可使用command+鼠标左键,进入头文件,查看类的接口部分。

2.API与头文件的区别

1️⃣苹果帮助文档(API)中详细的介绍了方法的作用以及如何使用。
2️⃣头文件内只是简略的显示方法。
3️⃣当我们想详细的了解某一个类的功能的时候,使用苹果帮助文档(API)。
4️⃣当我们忘记某一个属性或者方法名的写法的时候,可以进入头文件进行快速查看。

3.字符串-NSString

C语言中,字符串是由char(ASCII码)字符组成。
OC中,字符串是由unichar(Unicode)字符组成。
NSString:不可变字符串,即:创建以后,内容和长度不能更改。
NSMutableString:可变字符串,即:创建以后,内容还可以修改。

4.字符串创建

初始化方法:
   NSString *string = [[NSString alloc] initWithFormat:@"I love iOS!"];
   format —— 格式串(使用方式与C语言格式化输出函数printf相似)
便利构造器:
   NSString *string = [NSString stringWithFormat:@"I love iOS!"];

5.NSMutableString

NSMutableString是NSString 类的子类。
NSMutableString创建的字符串是一个动态的可变的字符串,可以对原字符串对象进行增、删、改等操作。

6.可变、不可变区别

不可变字符串 —— 本身不能被修改。
对不可变字符串的修改操作,操作的是原字符串的副本,得到的是一个新的字符串。
可变字符串 —— 本身能被修改。
可变字符串修改的是原字符串,因此可变字符串的操作方法     没有返回值!!!

7.NSNumber

数值类。
作用:实现 基本数据类型与OC对象类型的相互转化。
基本数据类型(int,float等)转换为NSNumber。
NSNumber转换为基本数据类型(int,float等)。

8.NSNumber字面量

常量:
NSNumber *intNumber = @38;
NSNumber *charNumber = @‘w';

变量:
int age = 18;
NSNumber *ageNumber = @(age);

char gender = 'w';
NSNumber *genderNumber = @(gender);

9.NSValue

完成结构体和对象类型 的互转。
结构体(NSRange等)转换为NSValue。
NSValue转换为结构体(NSRange等)。

10.总结

1.可变对象通常是不可变对象的子类,包含父类所有方法,并且具有对原有对象的增、删、改功能。
注:不可变字符串的修改方法有返回值。
可变字符串的修改方法没有返回值。

2.可变对象的增、删、改都是对自身对象的操作。不可变对象的增、删、改都会生成新的对象,原对象不变。

3.NSNumber、NSValue主要是为了完成基本数据类型,结构体和对象的互转,便于与collection配合使用(collection — — 集合)。

相关文章

  • Objective-C实训(四)

    练习与示例: 1.数组相关概念 2.创建一个不可变数组 3.数组元素个数 4.从数组取出索引位置的对象 5.根据对...

  • Objective-C实训(二)

    新建一个Car类: 1.在Car.h中进行属性和方法的创建: 2.涉及到的知识点: 3.在Car.m中进行初始化方...

  • Objective-C实训(一)

    写的实训的内容并不是当天的内容,是之前几天实训的总结,好多内容还不完善,有好多东西是给自己总结方便以后看的,希望看...

  • Objective-C实训(三)

    练习与示例: 1.字符串 2.字符串的字面量形式(方便书写,语法糖?) 3.比较内容相同的方法 4.字符串常用属性...

  • Objective-C实训(五)

    练习与示例: 1.字典相关练习 2.可变字典 作业: 新建Contact类: 在.h中声明属性与方法(包括初始化方...

  • Objective-C实训(六)

    练习与示例: 1.代理 新建Boss类,在.h中声明其方法和代理属性: 在.m中实现方法: 新建一个Worker类...

  • 实训感悟

    今天是实训第二天,总共上了四节实训课。临近毕业,实习前的实训是每个毕业生都必须参与的。虽说目前还不知道这次实训课会...

  • 2021年4月复盘

    4月的我不再过度思考,想太多也不是件好事。 四月初我们开始实训,那是我们的第二次实训,本学期我们已经实训了四次了,...

  • C实训(四)

    练习: 新建一个Suibian类,以下函数的部分都是写到这个类中的: 1.用函数实现 : 随机产生count个[n...

  • 邓凯f_成长过程之实训

    今天是到实训中心的第四天,正式开始实训的第三天,虽然只是短短几天,但是感受到的东西还是挺多的。 实训中心的学习再也...

网友评论

      本文标题:Objective-C实训(四)

      本文链接:https://www.haomeiwen.com/subject/efxhdxtx.html