Foundation框架(一)


Foundation框架是IOS开发和MAC开发的基础框架,其中包含了很多开发中经常用到的数据类型。

一、NSRange

1.NSRange的定义

NSRange包含两个属性,locationlength

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

2.创建方式

NSRange r1 = {2, 4}; // 不用
NSRange r2 = {.location = 2, .length = 4};// 不用
NSRange r3 = NSMakeRange(2, 4); // 掌握

3.使用方法

NSString *str = @"my name is alin";
// 找到@"alin"在str中的位置
NSRange range = [str rangeOfString:@"alin"];
NSLog(@"location=%ld, length=%ld", range.location, range.length);

如果找不到,length=0range=NSNotFound=-1

 


二、结构体NSPointNSSizeNSRect

使用它们需要引用CoreGraphics框架

点击工程->Build phases->Link binary With Libraries

 Foundation框架(一)_第1张图片

点击增加,搜索CoreGraphics框架

 Foundation框架(一)_第2张图片

NSSizeNSRectNSPoint有类似的定义和使用方法,下面以NSPoint为例来介绍

1.NSPoint的定义

NSPointNSGeometry.h文件中的定义

typedef CGPoint NSPoint;

CGGermetry.h中,CGPoint的定义如下

struct CGPoint {
  CGFloat x;
  CGFloat y;
};

2.创建方式

CGPointMake(CGFloat x, CGFloat y) 或者

NSMakePoint(CGFloat x, CGFloat y)

3.使用方法

1) 将结构体转换为字符串

NSStringFromPoint(NSPoint aPoint)

2) 零值

CGPointZero表示,代表原点

3) 比较两点位置

bool CGPointEqualToPoint(CGPoint point1, CGPoint point2);

4) 矩形内包含点

bool CGRectContainsPoint(CGRect rect, CGPoint point);


三、Foundation框架常用类

 

开发中常用的类有NSStringNSArrayNSSetNSDictionaryNSDate。其中NSStringNSArrayNSSetNSDictionary有可变类,如NSMutableString

 

1.NSStringNSMutableString

1)NSString的创建:

// 直接创建
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];
    
// 从文件读取  
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
 
// 由URL创建,两种创建URL的方式
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/alin/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:@"/Users/alin/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

与上面对象方法对应,框架提供了有一样功能的类方法,开发中一般使用类方法。

2)  字符串写入文件

上面是从文件读取字符串,如果想把字符串写进文件,使用

// 字符串写入文件
[@"要写入的字符串" writeToFile:@"/Users/alin/Desktop/my.txt" 
atomically:YES encoding:NSUTF8StringEncoding error:nil];

atomically:YES : 表示如果中途写入失败,文件不会创建,安全性高。NO表示中途写入失败还会创建文件。

NSMutableString:代表可变字符串,创建后可以随时改变,与NSString不同的是,NSString里面的字符串一经初始化,就不可改变。

NSMutableString *s1 = [NSMutableString stringWithFormat:@"123"];
// 在字符串后添加字符串
[s1 appendString:@"456"];
// 删除指定范围的字符串”5”
[s1 deleteCharactersInRange:NSMakeRange(4,1)];
// 删除固定字符串”23”
NSRange range = [s1 rangeOfString:@"23"];
[s1 deleteCharactersInRange:range];
    
// 创建一个新字符串,原来的没改变
NSString *s2 = @"134";
NSString *s3 = [s2 stringByAppendingString:@"678"];
NSLog(@"%@",s3);


 

 

2.NSArrayNSMutableArray

1) NSArray的创建:

// NSArray是不可变数组,所以这个array永远是空数组
// NSArray *array = [NSArray array];
 
// 通过单个对象创建
NSArray *array2 = [NSArray arrayWithObject:@"alin"];
 
// 通过多个对象创建,nil是数组元素结束的标记
NSArray *array3 = [NSArray arrayWithObjects:@"alin", @"阿青", nil];
    
// 快速创建一个NSArray对象
NSArray *array4 = @[@"alin", @"阿青", @"阿婷"];
    
// 获取数组里面对象的个数
NSLog(@"%ld", array3.count);
    
// 通过objectAtIndex方法访问
NSLog(@"%@", [array3 objectAtIndex:1]);
    
// 通过下标快速访问
NSLog(@"%@", array3[0]);


2) NSArray的遍历

使用for循环遍历:

for (int i = 0; i

使用for(... in ...)遍历:

for (id obj in array)
{
     NSLog(@"%@", obj);
}

使用enumerateObjectsUsingBlock方法遍历:

// 每遍历一个对象,调用一次Block,并且将对象obj和对象的索引idx传递给Block
array enumerateObjectsUsingBlock:
     ^(id obj, NSUInteger idx, BOOL *stop) {
         NSLog(@"%ld---%@", idx, obj);
// 可以控制停止遍历
         if (idx == 1)
         {
             stop = YES;
         }
     }];


3) NSMutableArray

// 创建NSMutableArray
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];
 
// 错误写法, 因为@[]创建的是NSArray
NSMutableArray *array = @[@"jack", @"rose"];



你可能感兴趣的:(OC学习,ios,Foundation,NSString,NSArray)