Objective c 目标C组分按字符集分离

Objective c 目标C组分按字符集分离,objective-c,Objective C,我正在使用Objective C中的componentsSeparatedByCharactersInSet方法从数组中读取数据。当我的数组包含多个带分隔符的参数时,它可以正常工作,但当我的数组只有一个参数时,该方法不返回任何内容。例如: array = [x*y*z]; newAray = [array componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"*"]];

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

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]
,而不更改第一个数组的格式?

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

是的,当我使用数组时,我实际上是指数组中的一个特定索引。你可以这样在数组中使用它。在调用之前在末尾附加一个分隔符字符。发布真实代码总是比发布虚假代码好。例如,你的第一行肯定无效。