iOS category简单的使用

category

Category是我们在开发中经常用到的,它可以在我们不改变原有类的前提下来动态地给类添加方法。也就是说我们想为某一个类补充一个方法是就可以用到这个。
最近在写项目中遇到这样一个问题,就是对nsstring的处理,我们请求完数据后会返回一个2019-11-01 ,而我们需要的是11月01日,所以为我用category对类进行扩充添加一个方法。具体实现如下
首先创建一个Objective-C File
在这里插入图片描述
其次选择继承的类和名字在这里插入图片描述创建完毕后在这里插入图片描述在这里插入图片描述
然后在.h文件中声明然后在.h文件中实现即可,最后附上代码

#import "DBBookViewUpTwo+Test.h"
#import "DBBookPageManager.h"
@implementation DBBookViewUpTwo (Test)
- (NSString *)deal:(NSString *)data {
    NSString * str =  [data substringFromIndex:5];
    str = [str stringByReplacingCharactersInRange:NSMakeRange(2,1)  withString:@"月"];
    str = [NSString stringWithFormat:@" %@日",str];
    //NSLog(@"%@",str);
    return str;
}
最后使用的时候到导入头文件,然后由于写的是类方法所以用self 直接调用即可。
其实不仅仅是日期用到了category,其次在请求另外一个数据(想看人数),我们需要请求这个数据一次,得到他的ID,然后在请求一次,获得想看人数,那么我也可以写一个扩展方法就是传入数据ID 和 需要添加的label ,然后直接请求数据回到主线程中并为其赋值即可。代码如下

	- (void)labelWant:(NSString *)ID
                  label:(UILabel *)label {
  __block  NSString * str ;
    [[DBBookPageManager sharedManager]fetchExtraInformationWithID:(ID) succeed:^(NSString *latestWant) {
        str = latestWant;
        dispatch_sync(dispatch_get_main_queue(), ^{
           // [button setText:str];
            NSLog(@"latestWant:%@",latestWant);
            str = [NSString stringWithFormat:@"%@想看",latestWant];
           // self.pageHaveModel.number = latestWant;
           // NSLog(@"button:%@", label);
            [label setText:str];
            //[label setText:self.pageHaveModel.number];
          
        });
       
       
    } error:^(NSError * _Nonnull error) {
        NSLog(@"error");
    }];
发布了34 篇原创文章 · 获赞 4 · 访问量 725

猜你喜欢

转载自blog.csdn.net/weixin_44824650/article/details/102874759