3

我正在使用componentsSeparatedByCharactersInSetObjective C 中的方法从数组中读取数据。当我的数组包含多个带有分隔符的参数时,它可以正常工作,但是当我的数组只有一个参数时,该方法什么也不返回。例如:

array = [x*y*z];

newAray = [array componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"*"]];

//returns newArray = [x,y,z] - this is good

array = [x];

newAray = [array componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"*"]];

//returns nothing - this is bad

有没有办法解决这个问题,所以第二个例子会在newArray = [x]不改变第一个数组格式的情况下返回?

4

1 回答 1

2

" componentsSeparatedByCharactersInSet" 是存在于 " " 中的一个方法NSString,所以为了让你能够使用它,你的 " array" 对象需要是一个 " NSString" 对象。

我的解决方案是在 NSString 上添加一个类别,该类别返回由字符串中的字符分隔的组件数组,或者如果该调用返回的数组为空则返回整个字符串(如果没有匹配项允许分隔组件,则会发生这种情况) .

这是类别在 NSString 上的样子:

@interface NSString (AlwaysReturnSomething)

- (NSArray *) alwaysReturnSomethingForComponentsSeparatedByCharactersInSet: (NSCharacterSet *) characterSet;

@end

@implementation NSString (AlwaysReturnSomething)

- (NSArray *) alwaysReturnSomethingForComponentsSeparatedByCharactersInSet: (NSCharacterSet *) characterSet
{
    NSArray * arrayToReturn = [self componentsSeparatedByCharactersInSet: characterSet];
    if(arrayToReturn == NULL) || ([arrayToReturn count] == 0)
    {
        arrayToReturn = [NSArray arrayWithObject: self];
    }
    return(arrayToReturn);
}

@end
于 2013-04-21T00:25:24.490 回答