黑马程序员 OC语言 - 7 结构体、NSString、NSArray、NSMutableArray
2014-08-30 16:49
597 查看
若排版有错误,请查看PDF版:http://pan.baidu.com/s/1bnzW6jt
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect (CGPint CGSize)
// @"ilove oc"
// 表示"love"的范围
NSRange r1 = {2,
4}; // 不用
NSRange r2 = {.location = 2, .length =4};//
不用
NSRange r3 = NSMakeRange(2,4);
// 掌握
// 查找某个字符串在str中的范围(rangeOfString:)
NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];//
如果找不到,length=0,location=NSNotFound==-1
NSLog(@"loc = %ld,length=%ld", range.location, range.length);
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}};
CGRect r3 = {p1, s2};
// 使用CGPointZero(原点)等的前提是添加CoreGraphics框架
// CGSizeZero
// CGRectZero
CGRect r4 = {CGPointZero,CGSizeMake(100,
90)};
将结构体转为字符串
//NSString *str = NSStringFromPoint(p1);
//NSString *str = NSStringFromSize(s3);
NSString *str = NSStringFromRect(r1);
NSLog(@"%@", str);
// {{0, 0}, {100, 50}}
CGRectmyRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
// 比较两个点是否相同(x、y)
BOOL b =CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));
//CGRectEqualToRect(<#CGRect rect1#>, <#CGRectrect2#>)
//CGSizeEqualToSize(<#CGSize size1#>, <#CGSizesize2#>)
BOOL b2 =CGRectContainsPoint(CGRectMake(50,40,
100, 50), CGPointMake(60,
45));
//NSString *s2= [[NSString alloc] initWithString:@"jack"];
NSString*s3 = [[NSString alloc] initWithFormat:@"age is %d",10];
// C字符串--> OC字符串
NSString *s4 = [[NSString alloc]initWithUTF8String:"jack"];
/
4000
/ OC字符串 --> C字符串
const
char *cs = [s4 UTF8String];
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSStringalloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"encoding:NSUTF8StringEncoding error:nil];
// URL : 资源路径
// 协议头://路径
// file://
// ftp:// // http://weibo.com/a.png
// NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];
一般都会有一个类方法跟对象方法配对
[NSURL URLWithString:<#(NSString *)#>];
[NSString stringWithFormat:@""];
[NSStringstringWithContentsOfFile:<#(NSString *)#>encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing*)#>];
NSString *str = @"4234234";
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
[str writeToURL:url atomically:YESencoding:NSUTF8StringEncoding error:nil];
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
NSArray*array = [NSArray array];
2) nil是数组元素结束的标记
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
NSArray*array3 = [NSArray arrayWithObjects:@"jack",@"rose",
nil];
3) 快速创建一个NSArray对象,@[]只能创建不可变数组
NSArray*array3 = @[@"jack",@"rose"];
int i =
0;
for (id objin array3)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array3indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
if (i==1)
{ //停止遍历
break;
}
}
[array3 enumerateObjectsUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx,BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx ==
1)
{
// 停止遍历
*stop = YES;
}
}];
nil];
[array addObject:@"jack"];
[array removeObjectAtIndex:0];
NSLog(@"%@", array);
NSLog(@"%ld", array.count);
一、 结构体
NSRange(location length)NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect (CGPint CGSize)
1. NSRange(location length)
表示范围:位置(location)、长度(length)// @"ilove oc"
// 表示"love"的范围
NSRange r1 = {2,
4}; // 不用
NSRange r2 = {.location = 2, .length =4};//
不用
NSRange r3 = NSMakeRange(2,4);
// 掌握
// 查找某个字符串在str中的范围(rangeOfString:)
NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];//
如果找不到,length=0,location=NSNotFound==-1
NSLog(@"loc = %ld,length=%ld", range.location, range.length);
2. NSPoint/CGPoint
表示点:坐标(x, y)CGPoint p1 =NSMakePoint(10,10);
NSPoint p2 = CGPointMake(20,
20);// 最常用
3. NSSize/CGSize
表示区域大小:宽度(width)、高度(height)NSSize s1 =CGSizeMake(100,50);
NSSize s2 =NSMakeSize(100,50);
CGSize s3 = NSMakeSize(200,
60);
4. NSRect/CGRect (CGPint CGSize)
表示区域:点(CGPoint)、区域大小(CGSize)CGRect r1 = CGRectMake(0,0,
100, 50);
CGRect r2 = { {0,
0}, {100, 90}};
CGRect r3 = {p1, s2};
// 使用CGPointZero(原点)等的前提是添加CoreGraphics框架
// CGSizeZero
// CGRectZero
CGRect r4 = {CGPointZero,CGSizeMake(100,
90)};
将结构体转为字符串
//NSString *str = NSStringFromPoint(p1);
//NSString *str = NSStringFromSize(s3);
NSString *str = NSStringFromRect(r1);
NSLog(@"%@", str);
// {{0, 0}, {100, 50}}
CGRectmyRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
5. CGPointEqualToPoint、CGRectContainsPoint等
使用这些CGPointEqualToPoint(比较两点是否相同)、CGRectContainsPoint(点是否在某区域内)等函数的前提是添加CoreGraphics框架// 比较两个点是否相同(x、y)
BOOL b =CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));
//CGRectEqualToRect(<#CGRect rect1#>, <#CGRectrect2#>)
//CGSizeEqualToSize(<#CGSize size1#>, <#CGSizesize2#>)
BOOL b2 =CGRectContainsPoint(CGRectMake(50,40,
100, 50), CGPointMake(60,
45));
二、 NSString
1. 字符串的创建
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"];
/
4000
/ OC字符串 --> C字符串
const
char *cs = [s4 UTF8String];
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSStringalloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"encoding:NSUTF8StringEncoding error:nil];
// URL : 资源路径
// 协议头://路径
// file://
// ftp:// // http://weibo.com/a.png
// NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];
一般都会有一个类方法跟对象方法配对
[NSURL URLWithString:<#(NSString *)#>];
[NSString stringWithFormat:@""];
[NSStringstringWithContentsOfFile:<#(NSString *)#>encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing*)#>];
2. 字符串的导出
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YESencoding:NSUTF8StringEncoding error:nil];NSString *str = @"4234234";
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
[str writeToURL:url atomically:YESencoding:NSUTF8StringEncoding error:nil];
三、 NSArray、NSMutableArray
OC数组不能存放nil值OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
(一) NSArray(不可变数组)
1. NSArray的创建
1) 这个array永远是空数组NSArray*array = [NSArray array];
2) nil是数组元素结束的标记
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
NSArray*array3 = [NSArray arrayWithObjects:@"jack",@"rose",
nil];
3) 快速创建一个NSArray对象,@[]只能创建不可变数组
NSArray*array3 = @[@"jack",@"rose"];
2. NSArray中元素的个数
NSLog(@"%ld", array3.count);3. NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);// rosearray3[1];4. 遍历数组
// id obj代表着数组中的每一个元素int i =
0;
for (id objin array3)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array3indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
if (i==1)
{ //停止遍历
break;
}
}
[array3 enumerateObjectsUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx,BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx ==
1)
{
// 停止遍历
*stop = YES;
}
}];
(二) NSMutableArray(可变数组)
1. NSMutableArray的创建
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose",@"jim",nil];
2. 添加元素
[array addObject:[[Personalloc] init]];[array addObject:@"jack"];
3. 删除元素
[array removeAllObjects];4. 删除指定的对象
[array removeObject:@"jack"];[array removeObjectAtIndex:0];
5. 错误写法
[array addObject:nil];NSLog(@"%@", array);
NSLog(@"%ld", array.count);
相关文章推荐
- 黑马程序员--OC自学笔记---10Foundation、NSString、NSURL、NSRange、NSArray、NSMutableArray、NSDictionary
- 黑马程序员--OC学习篇之Foundation框架中的NSArray对象和NSMutableArray对象
- 黑马程序员---OC学习笔记之NSArray与NSMutableArray
- 黑马程序员——OC语言日志——NSMutableString和NSMutableArray 的介绍及使用
- OC语言-----NSArray , NSMutableArray, NSNumber 基本用法
- 黑马程序员-OC语言-NSMutableString&NSString
- 【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray
- 2015.12.23 OC中的字符串(NSString&NSMutableString) 数组(NSArray&NSMutableArray)
- 黑马程序员 oc随记 foundation框架 nsstring.NSmutable.nsarray与nsdictionay
- 黑马程序员-oc基础-oc中之集合NSArray,NSMutableArray
- 黑马程序员 - OC语言 - NSMutableArray及基本使用
- OC学习之道:OC对象,字符串和数组的使用方法NSString,NSMutableString ,NSArray,NSMutableArray
- 03-黑马程序员-NSArray、NSMutableArray
- 黑马程序员------foundation_NSArray,NSMutableArray
- OC语言--字符串(NSString& NSMutableString)
- 黑马程序员——Objective-C学习之不可变与可变集合(NSArray\NSMutableArray)
- OC_NSArray和NSMutableArray
- iOS OC(四) 字符串NSString 可变数组NSMutableArray 不可变数组NSArray 数值对象类NSNumber NSValue 数值对象类NSNumber
- 黑马程序员--NSArray,NSString,NSSet,NSDictionary,NSNumber,NSValue 及其可变(NSMutable..)
- OC学习笔记15--Foundation之NSArray与NSMutableArray常用方法