iOS开发笔记——常用代码块

本文介绍了一系列iOS开发中常用的时间与字符串处理方法,包括获取当前时间、字符串与日期类型的转换、时间比较等,并提供了将不同进制间转换、字符串合法性验证及设备型号获取的功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取当前时间

/**
 获取当前时间(格式为:YYYY-MM-dd HH:mm:ss)

 @return 返回获取到当前的时间字符串
 */
+ (NSString *)getCurrentDateString
{
    NSDate *currentDate = [NSDate date];//获取当前时间,日期
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    NSString *dateString = [dateFormatter stringFromDate:currentDate];
    return dateString;
}

2.把时间字符串转换为NSDate类型

/**
 把字符串转化为NSDate类型

 @param string 待转换的字符串
 @return 转化后的Date
 */
+ (NSDate *)changeStringToDate:(NSString *)string
{
    NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//设定时间格式,要注意跟下面的dateString匹配,否则日起将无效
    return [dateFormat dateFromString:string];
}


3.判断当前时间是否在指定时间段内

/**
 判断当前时间是否在指定时间内
 
 @param startDate 开始时间
 @param endDateString 结束时间
 @return 是否在时间段内
 */
+ (BOOL)isMatchCurrentDateWithStartDate:(NSString *)startDate endDate:(NSString *)endDateString
{
    NSDate *currentDate = [self changeStringToDate:[NSDate getCurrentDateString]];
    
    NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//设定时间格式,要注意跟下面的dateString匹配,否则日起将无效
    
    if ([currentDate compare:[dateFormat dateFromString:startDate]] ==NSOrderedAscending)
        return NO;
    
    
    if ([currentDate compare:[dateFormat dateFromString:endDateString]] ==NSOrderedDescending)
        return NO;
    
    return YES;
}

4.判断一个时间是否在指定时间之后

/**
 判断时间是否在另一个时间之后

 @param firstDate 需要判断时间
 @param secondDate 参考时间
 @return 判断结果
 */
+ (BOOL)checkDate:(NSString *)firstDate isBeforDate:(NSString *)secondDate
{
    
    NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//设定时间格式,要注意跟下面的dateString匹配,否则日起将无效
    
    if ([[dateFormat dateFromString:firstDate] compare:[dateFormat dateFromString:secondDate]] == NSOrderedAscending) {
        return YES;
    }
    return NO;
}

5.十进制转十六进制

/**
 将十进制转化为十六进制
 
 @param ascii 10进制  int类型
 @return 16进制
 */
+ (NSString*)changASCIIToHEX:(NSInteger)ascii
{
    NSString* intAscii = [[NSString alloc] initWithFormat:@"%1lx", (long)ascii];
    NSString* hex = [NSString stringWithFormat:@"%@", intAscii];

    if (hex.length == 5) {
        return [NSString stringWithFormat:@"0%@",hex];
    }
    else {
        return hex;
    }

6.十六进制转十进制

/**
 将十六进制转化为十进制
 
 @param str 16进制 nsstring类型
 @return 10进制
 */
+ (NSInteger)changHEXToASCII:(NSString*)str
{
    NSString* temp10 = [NSString stringWithFormat:@"%lu", strtoul([str UTF8String], 0, 16)];
    int cycleNumber = [temp10 intValue];

    return cycleNumber;
}

7.判断字符串是否只包含数字、大小写字母、汉字

/**
 判断字符串是否有非法字符(只包含数字、大小写字母、汉字)
 
 @param string 待校验的字符串
 @return 校验结果
 */
+ (BOOL)isMatchCommonString:(NSString*)string
{
    NSString* str = @"^[A-Za-z0-9\\u4e00-\u9fa5]+$";
    NSPredicate* emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", str];
    if ([emailTest evaluateWithObject:string]) {
        return YES;
    }
    return NO;
}

8.验证字符串是否是指定长度的纯数字字符串

/**
 验证字符串是否是指定长度的纯数字字符串
 
 @param string 需要匹配的字符串
 @param count 数字长度
 @return 匹配结果
 */
+ (BOOL)isMatchNumberString:(NSString*)string andCount:(NSInteger)count
{
    NSString* regex = [NSString stringWithFormat:@"^[0-9]{%ld}$", (long)count];
    NSPredicate* pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    return [pred evaluateWithObject:string];
}

9.获取手机型号(iPhone 7 Plus、iPad Pro等)

/**
 获取手机型号iPhone 5S、iPad 2等
 
 @return 手机型号
 */
+ (NSString*)getPhoneVersion
{
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString* platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
    if ([platform isEqualToString:@"iPhone1,1"])
        return @"iPhone 2G";
    if ([platform isEqualToString:@"iPhone1,2"])
        return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])
        return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])
        return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,2"])
        return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])
        return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone4,1"])
        return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])
        return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,2"])
        return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,3"])
        return @"iPhone 5c";
    if ([platform isEqualToString:@"iPhone5,4"])
        return @"iPhone 5c";
    if ([platform isEqualToString:@"iPhone6,1"])
        return @"iPhone 5s";
    if ([platform isEqualToString:@"iPhone6,2"])
        return @"iPhone 5s";
    if ([platform isEqualToString:@"iPhone7,1"])
        return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"iPhone7,2"])
        return @"iPhone 6";
    if ([platform isEqualToString:@"iPhone8,1"])
        return @"iPhone 6s";
    if ([platform isEqualToString:@"iPhone8,2"])
        return @"iPhone 6s Plus";
    if ([platform isEqualToString:@"iPhone8,4"])
        return @"iPhone SE";
    if ([platform isEqualToString:@"iPhone9,1"])
        return @"iPhone 7";
    if ([platform isEqualToString:@"iPhone9,2"])
        return @"iPhone 7 Plus";
    if ([platform isEqualToString:@"iPod1,1"])
        return @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])
        return @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])
        return @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])
        return @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPod5,1"])
        return @"iPod Touch 5G";
    if ([platform isEqualToString:@"iPad1,1"])
        return @"iPad 1G";
    if ([platform isEqualToString:@"iPad2,1"])
        return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,2"])
        return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,3"])
        return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,4"])
        return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,5"])
        return @"iPad Mini 1G";
    if ([platform isEqualToString:@"iPad2,6"])
        return @"iPad Mini 1G";
    if ([platform isEqualToString:@"iPad2,7"])
        return @"iPad Mini 1G";
    if ([platform isEqualToString:@"iPad3,1"])
        return @"iPad 3";
    if ([platform isEqualToString:@"iPad3,2"])
        return @"iPad 3";
    if ([platform isEqualToString:@"iPad3,3"])
        return @"iPad 3";
    if ([platform isEqualToString:@"iPad3,4"])
        return @"iPad 4";
    if ([platform isEqualToString:@"iPad3,5"])
        return @"iPad 4";
    if ([platform isEqualToString:@"iPad3,6"])
        return @"iPad 4";
    if ([platform isEqualToString:@"iPad4,1"])
        return @"iPad Air";
    if ([platform isEqualToString:@"iPad4,2"])
        return @"iPad Air";
    if ([platform isEqualToString:@"iPad4,3"])
        return @"iPad Air";
    if ([platform isEqualToString:@"iPad4,4"])
        return @"iPad Mini 2G";
    if ([platform isEqualToString:@"iPad4,5"])
        return @"iPad Mini 2G";
    if ([platform isEqualToString:@"iPad4,6"])
        return @"iPad Mini 2G";
    if ([platform isEqualToString:@"i386"])
        return @"iPhone Simulator";
    if ([platform isEqualToString:@"x86_64"])
        return @"iPhone Simulator";
    return platform;
}

10.根据颜色生成图片

/**
 根据颜色生成图片
 
 @param color 颜色
 
 @return 生成的图片
 */
+ (UIImage*)creatImageWithColor:(UIColor*)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}






1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值