调用函数问题

时间:2011-11-11 05:45:08

标签: iphone objective-c ios xcode

我有一个方法如下用来纠正Json中的空值

+(NSString *)CorrectJsonForEmptyValues:(NSString *)pasRawJson
{

    NSLog(@"CorrectJsonForEmptyValues");
    NSMutableString *tmpJson = [pasRawJson mutableCopy];

    [tmpJson replaceOccurrencesOfString:@"[,"
                             withString:@"[{\"v\": \"N/A\",\"f\":\"N/A\"},"
                                options:0
                                  range:NSMakeRange(0, [tmpJson length])];

    [tmpJson replaceOccurrencesOfString:@",,"
                             withString:@",{\"v\": \"N/A\",\"f\":\"N/A\"},"
                                options:0
                                  range:NSMakeRange(0, [tmpJson length])];

    NSString *correctedJson=tmpJson;
    return correctedJson;
}

像这样调用函数

result = [self performSelector:@selector(CorrectJsonforEmptyvalues:) withObject:result];

但是收到错误

 2011-11-11 11:11:33.217 HelloWorld10[38833:207] -[Data CorrectJsonforEmptyvalues:]: unrecognized selector sent to instance 0x5725cc0
 2011-11-11 11:11:33.219 HelloWorld10[38833:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Data CorrectJsonforEmptyvalues:]: unrecognized selector sent to instance 0x5725cc0'

如果有人可以提供解决方案,那将会很有帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:5)

您已将CorrectJsonForEmptyValues:声明为类方法,方法是使用+而不是-启动其声明/定义。因此,您可以在类对象上调用它,而不是在类的实例上调用它。例如,如果您的班级名为Data,则可以这样命名:

result = [Data CorrectJsonForEmptyValues:result];

顺便说一句,你不应该用大写字母开始方法名称。

答案 1 :(得分:1)

您可以按如下方式调用功能

        [self CorrectJsonForEmptyValues:result];

用' - '

替换下面的'+'
    +(NSString *)CorrectJsonForEmptyValues:(NSString *)pasRawJson{