检查NSString是否包含base64数据

时间:2012-04-25 16:48:44

标签: iphone objective-c ios base64 nsdata

如何检查NSString是否包含if语句中的base64数据?因为base64以完全随机的方式对数据进行编码,所以我无法在NSString中搜索短语,因此我需要检查字符串的内容是否会产生数据文件。

1 个答案:

答案 0 :(得分:5)

这是我创建的NSString上应该有效的类别:

@interface NSString (MDBase64Additions)
- (BOOL)isBase64Data;
@end

@implementation NSString (MDBase64Additions)

- (BOOL)isBase64Data {
    if ([self length] % 4 == 0) {
        static NSCharacterSet *invertedBase64CharacterSet = nil;
        if (invertedBase64CharacterSet == nil) {
            invertedBase64CharacterSet = [[[NSCharacterSet
               characterSetWithCharactersInString:
        @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="]
                                     invertedSet] retain];
        }
        return [self rangeOfCharacterFromSet:invertedBase64CharacterSet
           options:NSLiteralSearch].location == NSNotFound;
    }
    return NO;
}

@end

如果您希望数据中有换行符或空格,则可以更新此方法以先删除这些内容(可能是NSCharacterSet的{​​{1}})。

如果主要只有一个类将使用此类别方法,则可以将此代码放在其类+whitespaceCharacterSet块上方的.m文件中。如果您认为您可能希望从多个班级中使用该类别,则可以创建一个单独的.h& .m对包含它(例如@implementationMDFoundationAdditions.h),然后将其导入到这些类中。

使用:

MDFoundationAdditions.m