首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

iOS 開發常用工具方法:NSString、NSDate、NSArray 分類封裝

     編輯:關於C++

字符串處理分類

// JSON 序列化
- (NSString *)jsonFromObject:(id)obj {
    NSError *err;
    NSData *data = [NSJSONSerialization dataWithJSONObject:obj options:NSJSONWritingPrettyPrinted error:&err];
    return data ? [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] : nil;
}

// 非空判斷(過濾 null、空串、"(null)"、"")
- (BOOL)isString:(NSString *)str {
    return str && ![str isKindOfClass:[NSNull class]] && str.length > 0 && ![str isEqualToString:@"(null)"] && ![str isEqualToString:@""];
}

// 字典安全取值
- (NSString *)valueForKey:(NSString *)key fromDict:(NSDictionary *)dic {
    return (dic && [dic.allKeys containsObject:key]) ? dic[key] : @"";
}

// 郵箱/手機/車牌驗證(正則)
- (BOOL)isValidateEmail:(NSString *)email { ... }
- (BOOL)isValidateMobile:(NSString *)mobile { ... }
- (BOOL)validateCarNo:(NSString *)carNo { ... }

// 數字格式化:保留指定小數位
- (NSString *)floatString:(float)val decimals:(int)digits {
    return [NSString stringWithFormat:@"%%.%df", digits], val];
}

日期轉換分類

// 字符串 → Date (格式: yyyy-MM-dd HH:mm:ss)
- (NSDate *)dateFromString:(NSString *)str {
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    return [fmt dateFromString:str];
}

// Date → 字符串 (格式: MM-dd HH:mm)
- (NSString *)stringFromDate:(NSDate *)date {
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"MM-dd HH:mm";
    return [fmt stringFromDate:date];
}

// 時間戳 → 相對時間字符串(今天顯示「今天」)
- (NSString *)relativeTimeFromTimestamp:(NSString *)ts {
    long long secs = [ts.substringToIndex:10 longLongValue];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:secs];
    // ... 比較日期部分,返回「今天」或格式化時間
}

數組排序分類

// 根據鍵路徑排序,ascending=YES 升序
- (NSArray *)sortedArray:(NSArray *)array byKey:(NSString *)key ascending:(BOOL)asc {
    NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:key ascending:asc];
    return [array sortedArrayUsingDescriptors:@[sd]];
}

文本框賦值輔助

- (NSString *)placeholderIfEmpty:(NSString *)text { return text.length ? text : @"未填寫"; }
- (NSString *)numberWithUnit:(NSNumber *)num unit:(NSString *)unit {
    if (!num || num.integerValue == 0) num = @0;
    return [NSString stringWithFormat:@"%@%@", [self floatString:num.floatValue decimals:0], unit];
}

使用建議

  1. 將上述方法歸類到 NSString+Utils、NSDate+Utils、NSArray+Utils 分類文件中
  2. 正則驗證預編譯 NSPredicate 避免重複創建
  3. 日期格式器 NSDateFormatter 較重,高頻調用建議緩存或使用單例
  4. 所有方法加上 nullable/nonnull 標註提升 Swift 互調體驗

這些分類方法覆蓋了 iOS 日常開發 80% 的字符串、日期、數組處理場景,統一封裝可大幅減少樣板代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved