2011-12-27 132 views
0

我只是在Xcode 4.2中学习Objective-C。我想要做的事情应该很简单,但是这会让我发疯。我试图从一个类方法传递一个NSString对象到另一个类方法,并且我已经能够成功地传递NSArray的。在两个类方法之间传递NSString对象

我环顾四周,发现如何在两个实例方法(我可以很好地工作)之间传递NSString对象的问题。这两个类的有如下:

+ (double)numberOfOperations:(NSArray *)program equalityTest:(NSString *)testForEquality 
{ 
    NSSet *stackSet = [[NSSet alloc] initWithArray:program]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:testForEquality]; 
    NSSet *filteredStackSet = [stackSet filteredSetUsingPredicate:predicate]; 
    return [filteredStackSet count]; 

} 

+ (double)descriptionOfProgram:(NSMutableArray *)program 
{ 
    NSArray *stack = [program copy]; 

    double test = [self numberOfOperations:stack equalityTest:@"+"]; 
    return test; 
} 

当我编译和运行上面的代码,我会在运行时错误“无法解析字符串‘+’我也粘贴了以下debbuger代码:

2011-12-27 14:51:53.755计算器[320:F803] *终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: '无法分析格式字符串 “+”'
*
首先抛出调用堆栈:
(0x13be052 0x154fd0a 0x94fdc1 0x94fbdf 0x94fb93 0x46fb 0x4829 0x 3c9c 0x2ac3 0x2a3e 0x13bfec9 0x185c2 0x1855a 0xbdb76 0xbe03f 0xbd2fe 0x3da30 0x3dc56 0x24384 0x17aa9 0x12a8fa9 0x13921c5 0x12f7022 0x12f590a 0x12f4db4 0x12f4ccb 0x12a7879 0x12a793e 0x15a9b 0x1f38 0x1e95) 终止叫做抛出异常(GDB)。

它甚至可以在类之间传递NSString对象吗?如果您需要更多信息,请与我们联系。

回答

1

@"+"不是有效的谓词格式,它正在吐痰虚拟文件,因为它无法创建具有指定格式的NSPredicate对象。这与传递字符串无关。

Predicate Programming Guide进行一次快速查看,看看谓词字符串应该是什么样子。

+0

谢谢!我能够重新格式化谓词,现在它工作正常。 – 2011-12-27 22:00:01

0

问题不在于传递字符串,那是工作正常。问题在于谓词。 “+”不是一个有效的谓词,它没有任何意义。有关创建谓词的更多信息,请参阅Predicate Programming Guide

+0

谢谢!我能够重新格式化谓词,现在它工作正常。 – 2011-12-27 22:00:20