Object-C学习(八)——Foundation框架(四)

五、类目Category

a、  类目的定义和类的定义相似。在.h文件里声明,.m文件里实现方法。

b、  定义类目的文件命名规则:类名+类目名称,如 “NSString + Revert”。

@interface NSString (Extension)

-(BOOL)validateEmail;

@end
@implemention NSString (Extension)

- (BOOL)validateEmail{
  //实现方法
}

类名的局限性

类目还可以覆写现有类的方法。覆写后,原始方法则无法调用。

类目不能为类扩展实例属性。

//声明类目
@interface NSString (Extension)

//覆写方法
- (int)intValue;

@end

六、  数字对象的常用处理方法

NSNumber

//创建NSNumber(包装基本数据类型)——包装
NSNumber *intNumber = [NSNumber numberWithInt:100];
NSNumber *floatNumber = [NSNumber numberWithFloat:200];
NSNumber *longNumber = [NSNumber numberWithLong:125125325];
NSNumber *boolNumber = [NSNumber numberWithBool:YES];

NSArray *array = @[ intNumber, floatNumber, longNumber, boolNumber];
NSLog(@” array = %@”,array);

//解包
int intvalue = [intNumber intValue];
float floatvalue = [floatNumber floatValue];
long longvalue = [longNumber longValue];
bool boolvalue = [boolNumber boolValue];

//NSNumber 优化的语法
NSNumber *intNumber1 = @12;//等价于 [NSNumber numberWithInt:100]
NSNumber *floatNumber1 = @2.32f;
NSNumber *longNumber1 = @34903521123;
NSNumber *boolNumber1 = @YES;
NSNumber *charNumber1 = @’s’;

NSValue——可以对结构体进行包装,NSValue是NSNumber的父类

NSRange rang = {10,20}
//封包
NSValue *rangValue = [NSValue valueWithRange:rang];

//解包
NSRange rang2 = [rangValue rangeValue];
NSLog(@” (%ld,%ld)”,rang2.location,rang2.lenght);

//对自定义的结构体进行封包
struct WXPoint{
  float x;
  float y;
}

struct WXPoint p = {50,100};
NSValue *pointValue = [NSValue value:&p withObjCType:@encode(struct WXPoint)];

//对自定义的结构体进行解包
struct WXPoint p2;
[pointValue getValue:&p2];
NSLong(@”p2.x=%f,p2.y=%f”, p2.x,p2.y);

NSNULL的使用

NSArray *nilarray = @[nil,nil,nil];//错误,nil不能够存入到数组或字典中

NSNull *n1 = [NSNull null];
NSNull *n2 = [NSNull null];
NSArray *nullarray = @[@”zhangsan”,n2];
NSLog(@”nullarray = %@” ,nullarray);

for (id item in nullarray){
  if(item == [NSNull]){
    NSLog(@”此位置是为空的元素”);
}
}

日期类NSDate

//创建日期

NSDate *date1 = [NSDate date];
NSDate *date2 = [[NSDate alloc] init];
NSLog(@”date2:%@”,date2);

//在当前时间点的基础上累加一个数值之后的日期,单位是秒
NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:24*60*60];
NSLog(@”date3:%@”,date3);

NSDate *date4 = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
NSLog(@”date4:%@”,date4);

//时间戳:某一日期到1970年的秒数大小,称为该日期的时间戳。
NSDate *date1970 = [NSDate dateWithTimeTntervalSince1970:0];
NSLog(@”date1970:%@”,date1970); 

NSDate *time = [NSDate dateWithTimeTntervalSince1970:11025412687];
NSLog(@” time:%@”, time);

//获取日期的时间戳
NSDate *timeNow = [NSDate date];
NSTimeInterval time1970 = [timeNow timeIntervalSince1970]
NSLog(@”time1970=%lf”,time1970);

//日期的比较
//1,通过调用日期对象的compare方法进行比较
NSComparisonResult result = [date3 compare:date2];
if (result == NSOrderedAscending) {
  NSLog(@”date3 > date2”);
}else {
  NSLog(@”date3 < date2”);
}

//2.通过比较时间戳
if ([date3 timeIntervalSince1970] > [date2 timeIntervalSince1970]) {
  NSLog(@”date3 > date2”);
} else {
  NSLog(@”date3 < date2”);
}

 日期格式化类NSDateFormatter

//日期对象 -? 字符串

NSDate *nowDate = [NSDate date];
NSString *timestr = nowDate.description;
NSLog(@”%@”,timestr);

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
//设置日期格式
[dateFormatter setDateFormat:@”yyyy年MM月dd日 HH时mm分ss秒”];
NSString *dateString = [dateFormatter stringFromDate:nowDate];
NSLog(@”当前时间:%@”,dateString);

//设置时区
NSTimeZon *time = [NSTimeZone timeZoneWithName:@”America/New_York”];
//将时区配置给dateFormatter对象
[dateFormatter setTimeZone:timezone];

NSString *datestring2 = [dateFormatter stringFromDate:nowDate];
NSLog(@”格式化后2:%@”,datestring2);

//字符串--?日期对象
NSString *str = @”2015年03月22日 17:06:22”;

NSDateFormatter * dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@”yyyy年MM月dd日 HH时mm分ss秒”];
NSDate *date11 = [dateFormatter2 dateFromString:str]
NSLog(@”%@”,date11);
时间: 2024-11-25 21:17:26

Object-C学习(八)——Foundation框架(四)的相关文章

黑马程序员-OC加强学习日记-Foundation框架中的字符串和数组

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.Foundation框架 1.概念:框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易. 为所有程序开发奠定基础的框架称为Foundation框架 2.使用:要想使用Foundation框架中的功能,包含它的主文件即可 #import <Foundation/Foundation.h> 二.NSString: 不可变字符串类   一个NSString对象

Objective - C学习 (Foundation框架)-- 01结构体

NSRange (location length) "I love oc"NSRange r = NSMakeRange(2,4) NSString *str = @"i love you"; NSRange range = [str rangeofString:@"love"]; NSLog(@"loc = %ld, length = %ld",range.location, range.length); 找不到length

黑马程序员——OC学习小结------Foundation框架

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.常用的结构体 NSRange (location,length) NSPoint\CGPoint (x,y) NSSize\CGSize (width, height) NSRect\CGRect (CGPoint,CGSize) NSRange void range() { /* @"i love oc" love的范围 NSRange r1 = {2, 4}; // 不用 N

SSH学习八 Spring框架 -- 控制反转实现Ioc

Spring的核心是控制反转(IoC)和面向切面(AOP)控制反转--Spring通过一种称作控制反转(IoC)的技术促进了低耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JNDI相反--不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它. (以上来自百度百科 http://baike.baidu.com/link?url=_egsZcZDKcHvLJtDqFTZIR3e6lH1G-p

Objective - C学习 (Foundation框架)-- 02类

NSString NSMutableStringNSArray NSMutableArrayNSSet NSMutableSetNSDictionary NSMutableDictionaryNSDateNSObject C -> OC字符串NSString *s = [[NSString alloc] initWithUTF8String:"jake"]; OC -> Cconst char *cs = [s UTF8String];NSUTF8StringEncodin

OC学习13——Foundation框架中的集合

OC集合类是一些非常有用的工具类,它可以用于存储多个数量不等的对象,并可以实现常用的数据结构(栈.队列等),此外,OC集合还可用于保存具有映射关系的关联数组.OC的集合大致可以分为:NSArray.NSSet.NSDictionary三种体系.NSArray代表有序可重复的集合:NSSet代表无序不可重复的集合:NSDictionary代表具有映射关系的集合. 下午继续...

OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/41809719,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的.

(转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDirctionary类 1 // 2 // main.m 3 // 19_NSDictionary 4 // 5 //

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.