Foundation框架包含了很多开发中常用的数据类型;
结构体
枚举
类
想使用Foundation中的数据类型。一定要包含
#import<Foundation/Foundation.h>
NSRange(location length)
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect (CGPint CGSize)
使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架
NSxxx=CGxxx;两者通用
定义
把字符串输出到指定文件
[@"要输出的字符串" writeToFile:@"/Users/dwt1220/指定的文件.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSArray :不可变数组与NSMutableArray : 可变数组
和String 类似
@[] 只创建不可变数组NSArray
注: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没有顺序
结构体
枚举
类
想使用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);
}