iOS笔记之_OC-Foundation

<span style="font-size:14px"一、Foundation简介

我们在写OC代码之前总要加一行代码#import <Foundation/Foundation.h>,这个的作用其实是将Foundation框架中的Foundation.h文件包含进代码内。那么Foundation究竟是什么呢?

Foundation 框架是苹果公司提供给开发人员,提高效率的的工作库,是IOS框架的基础。

Foundation中提供了了多类,定义在头文件中。例如NSString类。

Foundation框架中包含了很多开发中常用的数据类型:结构体、每句、类。

 

二、结构体

1、  NSRange(location, length):

表示的是范围:

NSRange r3 = NSMakeRange(2, 4);

2、  NSPoint\CGPoint

作用:表示平面的坐标,其实就是表示一个点

NSPoint p2 = CGPointMake(20, 20);

3.NSSize\CGSize

作用:表示平面的大小,有长和高两个属性。

NSSize s1 = CGSizeMake(100, 50);

4.NSRect\CGRect(CGPint CGSize)

对NSPoint和NSSize的整合

CGRect r1 = CGRectMake(0, 0, 100, 50)

 

三、NSString和NSMultableString

字符串存放在常量区,常量区特点是,一旦创建完成,就不能改变。

1. 字符串的创建

NSString *s1 = @"jack";

2. COC字符串互转

// C字符串 --> OC字符串

    NSString *s4 =[[NSString alloc] initWithUTF8String:"jack"];

    // OC字符串 --> C字符串

    const char *cs= [s4 UTF8String];

3. 获取字符的范围

获取is的范围

    NSRange range = [s1rangeOfString:@"is"];

4 字符串长度

 

string.lenght;

 

5 获取字符串中的字符

 

char c=[string charactorAtIndex:index];

 

6 通过拼接子符串创建一个新字符串

 

NSString str = [NSStringstringWithFormat:@"%d%d",6,7];

NSString str = [NSStringstringWithString:@"sss"];

 

7 c语言中的字符串转换成OC中的字符串

 

NSString str = [NSStringstringWithUTF8String:"sss"];

 

8 字符串截取

 

NSString str = [string substringFromIndex:index];

NSString str = [string substringToIndex:index];

 

9 获取子串在字符串位置

 

NSRang rang = [String rangOfString:@“收索字符"];

if(rang.location==NSNodFound){

    表示没有找到;

}

 

10 字符串转换

 

//转换成inter

[str interValue];

 

//转换成大小写

[str uppercaseString];

[str lowercaseString];

 

12 可变长度字符串

 

由于字符串是常量,一旦声明不可更改,OC提供NSMutableString对象

 

NSMutableString strMut = [NSMutableString string];

[strMut setString:@"字符串"]; //设置字符串

[strMut appendString:@"追加字符串"];//追加字符串

 

13. 字符串的判断

 

判断字符串是否为空

1 "==" 方式

 

if(str1 = str2 ){

}

通过==来判断字符串是否相等,是判断字符串的地址是否相等。

 

14. isEqualToString

 

if([str isEqualToString:str2]){

}

实现原理:

先判断字符串指向的地址是否相等,如果不等,就循环判断对于的字符是否相等

如果要判断两个字符串是否相等,一定要通过isEqualToString

 

三、 NSArray

NSArray :不可变数组

NSMutableArray :可变数组

1.NSArray的创建

     */

    NSArray*array2 = [NSArray arrayWithObject:@"jack"];

   

    // nil是数组元素结束的标记

    NSArray*array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];

    // [array2count];

   

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

   

    // 快速创建一个NSArray对象

    NSArray*array4 = @[@"jack", @"rose", @"4324324"];

      

    /*

     2.NSArray的元素个数

     */

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

      

    /*

     3.NSArray中元素的访问

     */

   NSLog(@"%@", [array3 objectAtIndex:1]);

   

    //array3[1];

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

2.可变数组的基本使用

 

void use3()
{
    NSMutableArray*array = [NSMutableArray arrayWithObjects:@"rose", @"jim",nil];
   
    // 添加元素
    [arrayaddObject:[[Person alloc] init]];
   
    [arrayaddObject:@"jack"];
   
    // 删除元素
    //[arrayremoveAllObjects];
    // 删除指定的对象
    // [arrayremoveObject:@"jack"];
    [arrayremoveObjectAtIndex:0];
   
    // 错误写法
    // [arrayaddObject:nil];
      
   NSLog(@"%@", array);
   
   NSLog(@"%ld", array.count);
}
 

四、  NSSet

NSSetNSArray的对比

 1> 共同点

 * 都是集合,都能存放多个OC对象

 * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:intcharfloat等,结构体,枚举)

 * 本身都不可变,都有一个可变的子类

 

 2> 不同点

 * NSArray有顺序,NSSet没有顺序

NSSet的基本使用

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

集合

 1.NSArray\NSMutableArray

 * 有序

 * 快速创建(不可变):@[obj1, obj2, obj3]

 * 快速访问元素:数组名[i]

 

 2.NSSet\NSMutableSet

 * 无序

 

 3.NSDictionary\NSMutableDictionary

 * 无序

 * 快速创建(不可变):@{key1 : value1,  key2 : value2}

 * 快速访问元素:字典名[key]

 

基本使用:

void use()
{
    /*
     字典:
    
     key ----> value
     索引 ----> 文字内容
    
     里面存储的东西都是键值对
    
    
     */
   
    // NSDictionary *dict = [NSDictionarydictionaryWithObject:@"jack" forKey:@"name"];
   
   
    // NSArray *keys = @[@"name",@"address"];
    // NSArray *objects = @[@"jack",@"北京"];
   
    // NSDictionary *dict = [NSDictionarydictionaryWithObjects:objects forKeys:keys];
     
    /*
     NSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:
     @"jack", @"name",
     @"北京", @"address",
     @"32423434", @"qq",nil];*/
      
    NSDictionary *dict = @{@"name" :@"jack", @"address" : @"北京"};
   
    // id obj = [dictobjectForKey:@"name"];
   
    id obj = dict[@"name"];
   
    NSLog(@"%@", obj);
    
       // 返回的是键值对的个数
    NSLog(@"%ld", dict.count);
}

 

六、NSSNumber

因为很多类(如NSArray)都要求使用对象,而int不是对象。
NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。

例如:

@20  将 20包装成一个NSNumber对像

将各种基本数据类型包装成NSNumber对象

    @10.5;

    @YES;

    @'A'; // NSNumber对象

    @"A"; // NSString对象

 

七、NSDate

NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(TimeInterval)运算和日期之间的早晚比较等。

基本使用示例:

#import <Foundation/Foundation.h>
 int main()
{
    // 09/10/2011
    NSString *time =@"2011/09/10 18:56";
   
    NSDateFormatter*formatter = [[NSDateFormatter alloc] init];
   formatter.dateFormat = @"yyyy/MM/dd HH:mm";
   
    NSDate *date =[formatter dateFromString:time];
   NSLog(@"%@", date);
    return 0;
}
  
void date2string()
{
    NSDate *date =[NSDate date];
      
    // 日期格式化类
    NSDateFormatter*formatter = [[NSDateFormatter alloc] init];
   
    // y 年  M 月  d 日
    // m 分 s 秒  H (24)时  h(12)时
   formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
   
    NSString *str =[formatter stringFromDate:date];
   
   NSLog(@"%@", str);
}
 
void use()
{
    // 创建一个时间对象
    NSDate *date =[NSDate date];
    // 打印出的时候是0时区的时间(北京-东8区)
   NSLog(@"%@", date);
   
    NSDate *date2 =[NSDate dateWithTimeInterval:5 sinceDate:date];
      
    // 从1970开始走过的秒数
    NSTimeIntervalseconds = [date2 timeIntervalSince1970];
   
    // [date2timeIntervalSinceNow];
}
 

七、 NSValue

我们可以使用NSValue来辅助我们实现一些简单数据结构的封装。

NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue。

例如:

/ 结构体--->OC对象

   

    CGPoint p =CGPointMake(10, 10);

    // 将结构体转为Value对象

    NSValue *value =[NSValue valueWithPoint:p];

   

    // 将value转为对应的结构体

    //[value pointValue];


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值