//
//  NSString+XXGString.m
//  XXGPlayKit
//
//  Created by apple on 2025/2/22.
//

#import "NSString+XXGString.h"

@implementation NSObject (XXGString)

- (BOOL)xxpk_isEmpty {
    // 1. 如果是 nil，Objective-C 给 nil 发消息直接返回 NO（因为方法返回 BOOL，对 nil 视为 0）。
    //    但这里我们希望把 nil 当作“空”，于是先显式判断：
    if (self == nil || (id)self == [NSNull null]) {
        return YES;
    }
    
    // 2. 如果是 NSString，再具体判断它是否只包含空白、长度为 0
    if ([self isKindOfClass:[NSString class]]) {
        NSString *str = (NSString *)self;
        if (str.length == 0) {
            return YES;
        }
        // 去掉首尾空白后长度是否为 0
        NSString *trimmed = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        return (trimmed.length == 0);
    }
    
    // 3. 如果是 NSNumber，也可以认为它不“为空”——根据业务，如果想把 0 当空，可以在这里额外判断
//    if ([self isKindOfClass:[NSNumber class]]) {
//        // 例如，如果你想把 @0 当作“空”，则：
//        // NSNumber *num = (NSNumber *)self;
//        // return (num.integerValue == 0);
//        // 否则，默认 NSNumber 只要不为 nil，就当做“非空”
//        return NO;
//    }
    
    // 4. 其他类型一律认为不“空”，或者你也可以一律返回 YES，当作“空”
    //    这里我们按“其他类型非空”来返回
    return YES;
}

- (BOOL)xxpk_isNotEmpty {
    return ![self xxpk_isEmpty];
}

//- (BOOL)xxpk_isNotEmpty {
//    return !self.xxpk_isEmpty;
//}
//
//- (BOOL)xxpk_isEmpty {
//    if (!self || ![self isKindOfClass:[NSString class]] || self.length == 0 || [self isKindOfClass:[NSNull class]]) {
//        return YES;
//    }
//    return [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0;
//}

@end
