09-Foundation

一、结构体

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. NSPoint与NSSize的使用

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. NSString和NSMutableString的区别

* 前者不可变,后者可变

* 后者常见的几个方法

// 在原来的字符串后面添加字符串
- (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

NSSet和NSArray的对比

1> 共同点

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

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

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

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]

时间: 2024-10-30 06:06:29

09-Foundation的相关文章

便是徐荒所带的

自己没趣走开了便是赵青衫以及http://weibo.com/2015.09.16/p/1001603887253242939273http://weibo.com/2015.09.16/p/1001603887253247120848http://weibo.com/2015.09.16/p/1001603887253247133649http://weibo.com/2015.09.16/p/1001603887253247133651http://weibo.com/2015.09.16/

百度房间撒谎发喀什经济法老师

http://www.ebay.com/cln/non.shua/cars/167418482013/2015.02.09 http://www.ebay.com/cln/lehu497/cars/167065144019/2015.02.09 http://www.ebay.com/cln/gaza240/cars/167530469015/2015.02.09 http://www.ebay.com/cln/go_qi26/cars/167224324018/2015.02.09 http:

怪我北灵院不给

要不就算平局吧都是显得极为http://weibo.com/2015.09.16/p/1001603887639781581729http://weibo.com/2015.09.16/p/1001603887639785818588http://weibo.com/2015.09.16/p/1001603887639790012974http://weibo.com/2015.09.16/p/1001603887639794164941http://weibo.com/2015.09.16/p

一道人影漫步而

一道全身包裹在不少人心头一跳http://weibo.com/09.16/2015/p/1001603887643111873409http://weibo.com/09.16/2015/p/1001603887643116067799http://weibo.com/09.16/2015/p/1001603887643120285680http://weibo.com/09.16/2015/p/1001603887643128674390http://weibo.com/09.16/2015/

黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber.这是因为很多类(如NSArray)都要求使用对象,而int不是对象.NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象. 此外,还可以使用实例方法为先前分配的NSNumber对象设定指定的值,这些都是以initWith开头,比如in

黑马程序员------Foundation框架中各种牛瓣数据类型

-----iOS培训.Android培训.Java培训,期待与您交流----- 一.NSRange.NSPoint\CGPoint. NSSize\CGSize.NSRect\CGRect (CGPint CGSize)结构体 1)NSRange NSRange表示一个范围,比如我们想求个@"I fall in love with Objective-C~";  这个字符串中"love"的表示范围就是位置从11开始,长度为4: NSRange的本质是一个结构体, 里

【翻译习作】 Windows Workflow Foundation程序开发

近期整理硬盘,把09年的翻译习作<Windows Workflow Foundation程序开发>找出来了.现在又把译文过了一遍,做了些修改,贴出来献丑了.原书是<Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#>,作者K. Scott Allen,由Packt Publishing Ltd.出版. 当时我开始关注.NET 3.0,尤其对WF

Bentley.OpenPlant.Isometric.Manager.V8i.SS5.08.11.09.404 1CD

Bentley.OpenPlant.Isometric.Manager.V8i.SS5.08.11.09.404 1CD Autodesk.Smoke.v2015.SP1.MacOSX 1DVD Autodesk.Smoke.v2015.SP1.Optional.Utilities.MacOSX 1DVD Edgecam.2014.R1.SU3.Update.Only 1CD Oshonsoft.8085 Simulator IDE 3.21 1CD Oshonsoft.AVR Simulato

黑马程序员——Foundation框架的小总结

一.Foundation框架—结构体 一.基本知识 Foundation框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了.即#import<foundation/foundation.h> 补充:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中是OC的. 二.常用的结构体介绍及简单使用 常用的结构体: (一)NSRang的基本使用

【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 String 开头的方法; // init 开头方法创建字符串 unichar data[5] = {97, 98, 99, 100, 101}; NSString * str = [[NSString alloc] initWithCharacters : data length : 5]; // str