NSString containsString crashes

前端 未结 6 1760
挽巷
挽巷 2020-12-04 23:32

I\'m trying to filter an array according to one of it\'s string fields.

Both nameLower and filterLower has NSString value inside, and yet i keep getting:

<         


        
6条回答
  •  悲哀的现实
    2020-12-05 00:16

    I encapsulate my solution in YJKit, and you can call -[NSString containsString:] even for old version which below iOS 8.

    bool _yj_streq(const char *str1, const char *str2, size_t length) {
        for (int i = 0; i < length; i++) {
            if (*str1++ != *str2++) {
                return false;
            }
        }
        return true;
    }
    
    - (BOOL)yj_containsString:(NSString *)string {
    
        NSAssert(string != nil, @"*** -[%@ containsString:] can not use nil argument.", [self class]);
    
        size_t len1 = (size_t)self.length;
        size_t len2 = (size_t)string.length;
    
        if (len1 == 0 || len2 == 0 || len1 < len2) {
            return NO;
        }
    
        const char *str1 = self.UTF8String;
        const char *str2 = string.UTF8String;
    
        for (size_t i = 0; i <= len1 - len2; i++) {
            const char *substr1 = str1 + i;
            if (_yj_streq(substr1, str2, len2)) {
                return YES;
            } else {
                continue;
            }
        }
    
        return NO;
    }
    

    Here is my source code: https://github.com/huang-kun/YJKit/blob/master/YJKit/Base/Foundation/Categories/Generics/NSString%2BYJCompatible.m

提交回复
热议问题