码迷,mamicode.com
首页 > 其他好文 > 详细

09-Foundation

时间:2015-09-12 17:36:11      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

一、结构体

1. Range

1> 定义NSRange的三种方式

NSRange r1 = {2, 4}; // 第一个数字表示字符串的位置,第二个数字表示其长度
NSRange r2 = {.location = 2, .length = 4};
NSRange r3 = NSMakeRange(2, 4); // 掌握

2> 查找某个字符串的位置

NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];

注意:如果找不到,range.length = 0 range.location == NSNotFound == -1

2. NSPointNSSize的使用

1> NSPoint的定义

NSPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = NSPointMake(20, 20); // 最常用,这里的 NS 可以换成 CG

2> NSSize的定义

NSSize s1 = NSMakeSize(100, 50);
NSSize s2 = NSSizeMake(100, 50); // 同上

3. CGRect的使用

1> 定义CGRect的三种方式

CGRect r1 = CGRectMake(0, 0, 100, 50);
CGRect r2 = { {0, 0}, {100, 90}};
CGRect r3 = {p1, s2};
CGRect r4 = {CGPointZero, CGSizeMake(100, 90)};

2> 将结构体转为字符串

NSString *str = NSStringFromPoint(p1);
NSString *str = NSStringFromSize(s2);
NSString *str = NSStringFromRect(r1);

二、NSString

1. 字符串的创建

NSString *s1 = @"iOS";
NSString *s2 = [[NSString alloc] initWithString:@"java"];
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];

2. C字符串与OC字符串的互转

1> C字符 --> OC字符串

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

2> OC字符串 --> C字符串

const char *cs = [s4 UTF8String];

3. 将文件转为字符串

NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"文件路径" encoding:NSUTF8StringEncoding error:nil];

4. 通过URL创建字符串的几种方式

1> 获得URL的两种方式

NSURL *url1 = [[NSURL alloc] initWithString:@"文件路径"]; // file:///Users/apple/Desktop/1.txt

NSURL *url2 = [NSURL fileURLWithPath:@"文件路径"]; // 推荐
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];

5. 字符串的导出

[@"字符串" writeToFile:@"这里不需要加上file://前缀,直接写文件路径" atomically:YES encoding:NSUTF8StringEncoding error:nil];

6. NSStringNSMutableString的区别

* 前者不可变,后者可变

* 后者常见的几个方法

// 在原来的字符串后面添加字符串
- (void)appendString:(NSString *)aString;

// 通过指定的范围删除对应的字符串
- (void)deleteCharactersInRange:(NSRange)range;

// 在字符串的后面添加字符串,并且返回一个新的字符串
- (NSString *)stringByAppendingString:(NSString *)aString;

三、NSArray

1. 数组的基本用法

1> OC数组不能存放nil

2> OC数组只能存放OC对象,不能存放非OC对象类型,比如int,struct,enum

3> NSArray的创建

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

4> NSArray的快速创建法

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

2. 数组的遍历

for (id obj in array)
{
    // ...
}

/**
 *  数组的遍历
 *
 *  @param obj  便利到的对象
 *  @param idx  对应的下标
 *  @param stop 是否终止循环
 *
 *  @return void
 */

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    // ...
}]; // 推荐

3. 可变数组的基本用法

// 创建可变数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];

// 添加元素
[array addObject:[[Person alloc] init]]; // 这里的Person是对象
[array addObject:@"jack"]; // 添加一个元素

注意:@[]只创建不可变数组NSArray

NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"]; // error

四、NSSet

NSSetNSArray的对比

1> 共同点

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

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

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

2> 不同点

* NSArray有顺序,NSSet没有顺序

五、NSDictionary

1. 字典创建的几种方式

NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
    @"jack", @"name",
    @"北京", @"address",
    @"32423434", @"qq", nil];
NSDictionary *dict4 = @{@"name" : @"jack", @"address" : @"北京"};

2. 字典常用的几种方法

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

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

// 移除键值对
[dict removeObjectForKey:@"jack"];

// 取出key为name的元素
NSString *str = dict[@"name"];

注意:

NSMutableDictionary *dict = @{@"name" : @"jack"}; // 这样创建出来的字典是不可变的
[dict setObject:@"rose" forKey:@"name"]; // error

3. 字典的遍历

字典不允许有相同的key,但允许有相同的value

[dict enumerateKeysAndObjectsUsingBlock:
 ^(id key, id obj, BOOL *stop) {
     // ...
 }]; // 用法与上面的数组是一样的  掌握

集合总结:

1.NSArray\NSMutableArray

* 有序

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

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

2.NSSet\NSMutableSet

* 无序

3.NSDictionary\NSMutableDictionary

* 无序

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

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

09-Foundation

标签:

原文地址:http://www.cnblogs.com/wayung7/p/4803156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!