Foundation框架

Foundation框架包含了很多开发中常用的数据类型;
结构体
枚举



想使用Foundation中的数据类型。一定要包含
#import<Foundation/Foundation.h>
 NSRange(location length)
 NSPoint\CGPoint
 NSSize\CGSize
 NSRect\CGRect (CGPint CGSize)
使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架


NSxxx=CGxxx;两者通用


定义
	// 一般记录屏幕上的点位置
    CGPoint p1 = NSMakePoint(10, 10);
    NSPoint p2 = CGPointMake(20, 20);// 最常用
    
	// 描述一片区域的尺寸大小
    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);
    
    // 定义矩形
    CGRect r1 = CGRectMake(0, 0, 100, 50);    
    CGRect r2 = { {0, 0}, {100, 90}};
    //使用 NSPoint ,NSSize来初始化,
    CGRect r3 = {p1, s2};

    // 将结构体转为字符串
  NSString *str = NSStringFromPoint(p1);
    
NSString *str = NSStringFromSize(s3);




 NSString : 不可变字符串与NSMutableString : 可变字符串


.字符串的创建

// 直接赋值的方式
    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 char *cs = [s4 UTF8String];
   // NSUTF8StringEncoding 用到中文就可以用这种编码
    NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"encoding:NSUTF8StringEncoding error:nil];
    


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

把字符串输出到指定文件
    [@"要输出的字符串" writeToFile:@"/Users/dwt1220/指定的文件.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];


    NSString *str = @"要输出的字符串";
    NSURL *url = [NSURL fileURLWithPath:@"/Users/dwt1220/指定的文件.txtt"];
    [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

NSArray :不可变数组与NSMutableArray : 可变数组
和String 类似
@[] 只创建不可变数组NSArray

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
    
    // 添加元素
    [array addObject:[[Person alloc] init]];
    
    [array addObject:@"jack"];
    
    // 删除元素
    //[array removeAllObjects];
    // 删除指定的对象
    // [array removeObject:@"jack"];
    [array removeObjectAtIndex:0];
    
    // 错误写法
    // [array addObject:nil];


遍历数组

for (id obj in array)
    {
       // 返回obj元素在数组中的位置
      NSUInteger i = [array indexOfObject:obj];

       NSLog(@"%ld - %@", i, obj);
       //i++;

       if (i==1)
      {
           break;
        }
    }

注:OC数组不能存放nil值
  OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
  // 这个array永远是空数组,   NSArray是不可变数组。
   NSArray *array = [NSArray array];


NSSet ,NSDictionary
NSSet和NSArray的对比
 1> 共同点
 * 都是集合,都能存放多个OC对象
 * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
 * 本身都不可变,都有一个可变的子类
 
 2> 不同点
 * NSArray有顺序,NSSet没有顺序
 
NSMutableSet *s = [NSMutableSet set]; 
 // 添加元素
 [s addObject:@"hack"];
 // 删除元素
 [s removeObject:<#(id)#>];

// set的基本使用
void test()
{
    NSSet *s = [NSSet set];
    
    NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
    
    // 随机拿出一个元素
    NSString *str =  [s2 anyObject];
    
    NSLog(@"%@", str);
    
    //NSLog(@"%ld", s2.count);
}


NSDictionary\NSMutableDictionary 是键值对

 * 无序
 * 快速创建(不可变):@{key1 : value1,  key2 : value2}
 * 快速访问元素:字典名[key]
字典不允许有相同的key,但允许有相同的value(Object)

NSDictionary *dict = @{
    @"address" : @"北京",
    @"name" : @"jack",
    @"name2" : @"jack",
    @"name3" : @"jack",
    @"qq" : @"7657567765"};
        NSArray *keys = [dict allKeys];
        for (int i = 0; i<dict.count; i++)
     {
          NSString *key = keys[i];
           NSString *object = dict[key];
            NSLog(@"%@ = %@", key, object);
       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dwt1220

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值