黑马程序员--Foundation框架

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1、Foundation框架概述

框架是封装起来的一个集合,里面包括把许多类、方法、函数、文档按照一定的逻辑组织起来的,在编写程序的时候可以直接调用,这样就是程序开发变得简捷和方便。

Foundation框架主要定义了一些基础类,供程序员使用,Foundation框架中所有的类的都继承NSObject这个对象。

在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等。

#import <Foundation/Foundation.h>
/*NSString :不可变字符串

 NSMutableString :可变字符串
 */
不可变字符串(NSStringint main()
{
    //最简单的常见字符串的方式
    NSString *str = @"itcase";
    //char *name = "itcase";
    NSLog(@"我在%@上课",str);

    int age = 13;
    int no = 3;
    NSString *name = @"哈哈jack";
    int size = [name length];
    //length方法算的是字数

    NSLog(@"%d", size);
    //创建oc字符串的另一种方式
    NSString *newStr = [NSString stringWithFormat:@"My age is %d and no is %d and name is %@",age ,no, name];
    NSLog(@"----%@",newStr);
    return 0;
}

可变字符串(NSMutableString)

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

    // 获取is的范围
    NSRange range = [s1 rangeOfString:@"is"];
    // 删除范围内的数值
    [s1 deleteCharactersInRange:range];

    NSString*s2 = [NS  stringWithFormat:@"age is 10"]
    // 重新复制一份s2 把“11 12”拼接到后面,但原来的s2不变
    NSString *s3 = [s2 string ByAppendingString:@"11 12"];

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

    return 0;
}

集合
1.NSArray\NSMutableArray
*有序
*可快速创建不可变数组:@[obj1,obj2]
*快速访问元素:数组名[i]

NSArray:不可变数组

int main ()
{
    /*
     int a = 3;
     person *p = [[Person alloc] init];// 利用C语言定义数组
     Person *peerson[5] = {p, [[Person alloc] init]};
     */
    // oc数组只能存放oc对象、不能存放非oc对象类型,比如int、 struct、enum等
   // 这个array永远是空数组
    // NSArray *array = [NSArray array];(不可变)

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

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


    // NSArray的个数
    NSLog(@"%ld",arry.count);
    // 快速遍历数组,id obj代表着数组中的每一个元素
    [array enumrateObjectsUsingBlock:
     ^(id obj,NSUInteger idx,BOOl *stop)
    {
        NSLog(@"%ld-%@",idx, obj);

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

    }];
    return 0;
}

可变数组(NSMutableArray)

int mian ()
{
    NSMutableArray *Array = [NSMutableArray arrayWithObject:@"rose",@"jim",nil];
    // 错误写法,可变数组不能这么写,只可以创建不可变数组
    NSMutableArray *Array = @[@"jack"]
    // 添加元素
    [[array addOject:[Person alloc]] init];

    [array addOject:@"jack"];
    // 删除元素
    // [array removeObject];
    // 删除指定对象
    [array removeObjectATIndex:0];

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

}

NSSet和NSArray的对比
1.共同点
*都是集合,都能存放多个oc对象
*只能存放oc对象,不能存放非oc对象类型(基本数据类型:int、char、float等,结构体、枚举)
*本身都不可变,都有一个可变的子类
2.不同点
*NsArray有顺序,NSSet没有顺序

NSSet(不可变)

int main()
{
    NSSet *s = [NSSEt set];// 固定的 不可变(空的)

    NSSet *s2 = [NSSet setWithObject:@"jack","rose",nil];
    // 随机拿出一个元素
    NSString *str = [s2 anyObject];

    NSLog(@"%@", str);

    return 0;
}

NSMutableSet(可变)

int main()
{
    NSMutableSet *s = [NSMutableSet set];

    // 添加元素
    [s addOject:@"hack"]
    // 删除元素
    [s removeObject:(id)];

    return 0;
}

字典(NSDictionary\NSMutableDictionary)
1.字典不允许有相同的key,但允许有相同的value(Object)
2.字典是没有顺序的
3.快速访问元素:字典名[key]

int main()
{
   // NSDictionry *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

    NSDictionary *dict = @{@"name" : @"jack",@"addresss" : @"北京"};// 用这种方法
    // id obj = [dict objectForKey:@"name"];
    id obj = dict[@"name"];
    NSLog(@"%@", obj);

    // 返回的是键值对的个数
    NSLog(@"%ld", dict.count);

    return 0;
}
NSMutableDictionaryint main()
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    // 添加键值对
    [dict setObject:@"jack" forKey:@"name"];

    // 删除键值对
    // [dict removeObjecctForKey:(id)];

    NSString *str = dict[@"name"];
    // 打印整个字典的键值对
    NSLog(@"%@"dictt);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值