类目
- 分为两类,一种为系统已经写好的,按照功能对系统的类方法进行区分;第二种为我们创建的类目,一般是为了把一些系统的类进行功能的扩充
类目从@interface开始,后面的是当前类的名字,类名后是分类的功能,到@end结束
写一个系统的类方法:
该NSString方法仅仅比较了字符串是否相同
NSString *str1 = @"2015-07-12 19:00:00";
NSString *str2 = @"2015-07-12 23:00:00";
if([str1 isEqualTwoDate:str2]){
NSLog(@"月份相同");
}else{
NSLog(@"月份不同");
现将NSString方法进行扩展,写一个类目,该方法实现的功能是比较两个日期的月份是否相同
1.首先建一个Objective- C category文件:
生成了NSString+StringMethod.h文件 和 NSString +StringMethod.h文件
**2.NSString+StringMethod.h文件**
//输入两个日期,判断两个日期是否在同一个月
-(BOOL)isEqualTwoDate:(NSString *)otherDate;
--------------------------------------------------
**NSString +StringMethod.h文件**
-(BOOL)isEqualTwoDate:(NSString *)otherDate{
//这个方法需要两个参数,第一个参数就是方法的调用哪个这,谁调用了这个方法,那么在这个方法的内部,self就是使用这个方法的对象
//先截取字符串
NSString *month1 = [self substringWithRange:NSMakeRange(5, 2)];
NSString *month2 =[otherDate substringWithRange:NSMakeRange(5, 2)];
return [month1 isEqualToString:month2];
}
--------------------------------------------------
**main.m文件**
注意:不要忘记引头文件
#import"NSString+StringMethod.h"
NSString *str = @"2015-07-12 19:00:00";
NSString *str2 = @"2015-07-12 20:00:00";
if([str isEqualTwoDate:str2]) {
NSLog(@"月份相同");
}else{
NSLog(@"月份不同");
}
练习:
1.写一个NSString类方法,将字符串拼接成如下形式:”2015-07-12 19:00 –20:00”
**NSString+StringMethod.h文件**
//拼接两个日期
-(NSString *)appendTwoDate:(NSString *)otherDate;
--------------------------------------------------
**NSString +StringMethod.h文件**
-(NSString *)appendTwoDate:(NSString *)otherDate{
//先截取
NSString *date1 = [self substringToIndex:16 ];
NSLog(@"%@", date1);
NSString *date2 = [otherDate substringWithRange:NSMakeRange(11,5)];
NSString *str = [NSString stringWithFormat:@"%@-%@", date1,date2];
return str;
}
--------------------------------------------------
**main.m文件**
NSString *str = @"2015-07-12 19:00:00";
NSString *str2 = @"2015-07-12 20:00:00";
NSString *date = [str appendTwoDate:str2];
NSLog(@"%@", date);
2.传过去一个字符串,返回一个时间的对象NSDate类型
**NSString+StringMethod.h文件**
-(NSDate *)stringToDate; //方法1
+(NSDate *)stringToDate:(NSString *)dateStr; //方法2
--------------------------------------------------
**NSString +StringMethod.h文件**
-(NSDate *)stringToDate{
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
return [formatter dateFromString:self];
}
+(NSDate *)stringToDate:(NSString *)dateStr{
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
return [formatter dateFromString:dateStr];
}
--------------------------------------------------
**main.m文件**
NSString *str = @"2015-07-12 19:00:00";
NSDate *date = [str stringToDate];
NSLog(@"%@", date);
NSDate *date1 = [NSString stringToDate:str];
NSLog(@"%@", date1);
延展
- 写在自己的.m的文件中,把一些不想让外部调用的属性放在延展里,这样这条属性只能在类的内部使用,尽最大可能保护当前类的安全
- 一般以@interface开头,然后写当前延展的类名,类名后会加一个(),到@end结束
- 注意:
类目一般都是给看不见的.m的系统文件进行扩展,延展一般是针对自己的类进行操作
例:
首先先建一个类文件:Student,再在类文件的.m文件里操作:
@interface Student()
@property(nonatomic, copy)NSString *name;
@end
@implementation Student
-(void)create{
_name = @"你好!";
NSLog(@"%@", _name);
}
@end