27-黑马程序员------OC 语言学习笔记--- Foundation02

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

NSArray和NSMutableArray
NSArray代表元素有序,可重复的一个集合,集合中每个元素都有其对应的顺序索引,NSArray只能保存对象,不能保存基本类型。NSArray代表集合元素不可变的集合,一旦NSArray创建成功,程序不能向集合中添加新的元素,不能删除集合中已有的元素,也不能替换集合元素。NSMutableArray是NSArray的子类,它代表的是一个集合元素可变的集合,因此,可以向集合中添加,删除,替换元素

void use()
{  

    // OC数组不能存放nil值
    // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等  

    // 这个array永远是空数组
    // NSArray *array = [NSArray array];  

    /*
     1.NSArray的创建
     */
    NSArray *array2 = [NSArray arrayWithObject:@"jack"];  

    // nil是数组元素结束的标记
    NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil nil];
    // [array2 count];  

    //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];  

    // 快速创建一个NSArray对象
    NSArray *array4 = @[@"jack", @"rose", @"4324324"];  

    //NSMutableArray *ARR = @[@"jack", @"rose"];  

    /*
     2.NSArray的元素个数
     */
    NSLog(@"%ld", array3.count);  

    /*
     3.NSArray中元素的访问
     */
    NSLog(@"%@", [array3 objectAtIndex:1]);  

    //array3[1];
    NSLog(@"%@", array3[0]);
}  

// 遍历数组
void use2()
{
    Person *p = [[Person alloc] init];  

    NSArray *array = @[p, @"rose", @"jack"];  

    //遍历数组,自定义方法
    //    for (int i = 0; i<array.count; i++)
    //    {
    //        NSLog(@"%@", array[i]);
    //    }  

    // id obj代表着数组中的每一个元素
    //int i = 0;
    //    for (id obj in array)
    //    {
    //        // 找出obj元素在数组中的位置
    //        NSUInteger i = [array indexOfObject:obj];
    //
    //        NSLog(@"%ld - %@", i, obj);
    //        //i++;
    //
    //        if (i==1)
    //        {
    //            break;
    //        }
    //    }  

    //系统遍历数组的方法
    [array enumerateObjectsUsingBlock:  

     // 每遍历到一个元素,就会调用一次block
     // 并且当前元素和索引位置当做参数传给block
     ^(id obj, NSUInteger idx, BOOLBOOL *stop)
     {
         NSLog(@"%ld - %@", idx, obj);  

         if (idx == 0)
         {
             // 停止遍历
             *stop = YES;
         }  

     }];  

}  

//NUMutableArray的使用
void use3()
{
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil nil];  

    // @[] 只创建不可变数组NSArray
    /* 错误写法
     NSMutableArray *array = @[@"jack", @"rose"]; 

     [array addObject:@"jim"];
     */  

    // 添加元素
    [array addObject:[[Person alloc] init]];  

    [array addObject:@"jack"];  

    // 删除元素
    //[array removeAllObjects];
    // 删除指定的对象
    // [array removeObject:@"jack"];
    [array removeObjectAtIndex:0];  

    // 错误写法
    // [array addObject:nil];  

    NSLog(@"%@", array);  

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

   NSString和NSMutableString
NSString代表字符序列不可变的字符串,而NSMutableString则代表字符序列可变的字符串。NSMutableString是NSString的子类。NSString的大致包括如下功能。
1、创建字符串:可以使用init开头的实例方法,也可使用string开头的类方法,还可以直接使用@""的形式给出字符串常量
2、读取网络URL或文件初始化字符串
3、將字符串内容写入文件或URL
4、获取字符串长度,包括字符个数和字节个数
5、连接,分隔,替换,比较字符串

//创建字符串
void stringCreate()
{
    /*
     1.字符串的创建
     */
    NSString *s1 = @"jack";  

    NSString *s2 = [[NSString alloc] initWithString:@"jack"];  

    NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];  

    // C字符串 --> OC字符串
    NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
    // OC字符串 --> C字符串
    const charchar *cs = [s4 UTF8String];  

    // 读取文件创建字符串,NSUTF8StringEncoding 用到中文就可以用这种编码
    NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];  

    // URL : 资源路径
    // 协议头://路径
    // file://
    // ftp://
    // http://weibo.com/a.png  

    // http://www.baidu.com  

    // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];  

    NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"s6=\n%@", s6);  

    /*
     一般都会有一个类方法跟对象方法配对
     [NSURL URLWithString:<#(NSString *)#>];
     [NSString stringWithFormat:@""];
     [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>]; 

     */  

}  

void stringExport()
{
    // 字符串的导出
    [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];  

    NSString *str = @"4234234";
    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
    [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
}  

int main()
{  

    NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
    // 拼接内容到s1的后面
    [s1 appendString:@" 11 12"];  

    // 获取is的范围
    NSRange range = [s1 rangeOfString:@"is"];
    [s1 deleteCharactersInRange:range];  

    NSString *s2 = [NSString stringWithFormat:@"age is 10"];  

    NSString *s3 = [s2 stringByAppendingString:@" 11 12"];  

    NSLog(@"s1=%@, s2=%@", s1, s2);  

    return 0;
}

  

时间: 2024-08-02 06:58:46

27-黑马程序员------OC 语言学习笔记--- Foundation02的相关文章

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员——oc语言学习心得----NSFileManager

黑马程序员——oc语言学习心得----NSFileManager -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 自己总结了下NSFileManager的简单几个用法 : // 首先要创建文件管理器 NSFileManager *fm=[NSFileManager defaultManager]; 1,判断文件是否存在 fileExistsAtPath: 2,判断文件是否是目录 fileExistsAtPath: 3, 判断文件是否可读

28-黑马程序员------OC 语言学习笔记--- Foundation03

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1    NSSet和NSMutableSetNSSet和NSArray一样,也是一个集合,但是集合里的多个对象没有明显的顺序.NSSet不允许包含相同的元素,如果试图把两个相同的元素放在同一个NSSet集合中,则会只保留一个元

24-黑马程序员------OC 语言学习笔记--- autorelease和ARC

  黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- autoreleaseOC提供了autorelease语法,系统可以將很多对象放到一个自动释放池中,在某个时刻统一release一次.这样就不用再次调用release方法.1.autorelease的基本用法:   1>

23-黑马程序员------OC 语言学习笔记---内存管理

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 对于面向对象的变成语言,程序需要不断地创建对象.初始,创建的所有程序通常都有指针指向它,程序可能需要访问这些对象的实例变量或调用这些对象的方法,随着程序的不断执行,程序再次创建了一些新的对象,而那些老的对象已经不会再被调用,也不

26-黑马程序员------OC 语言学习笔记--- Foundation01

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Foundation框架是iOS开发的基础框架,它包括字符串.集合.日期.时间等基础类 void test(){ //定义Date这种结构体类型 struct Date{ int year; int month; int day

黑马程序员------C 语言学习笔记---C语言基本语法成分

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.1     C语言基本语法成分 #include <stdio.h> int main() { #define PI 3.14 int r; double s; double m; // 提示用户输入半径 pri

黑马程序员------C 语言学习笔记---C语言的基本结构

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一 C语言结构基础 1.1     C语言的基本结构 01          #include <stdio.h> :表示文件包含,功能是将头文件stdio.h中的内容包含到程序中. 02          mai