OC_类的扩展(类目,延展)

类目

  • 分为两类,一种为系统已经写好的,按照功能对系统的类方法进行区分;第二种为我们创建的类目,一般是为了把一些系统的类进行功能的扩充
  • 类目从@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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值