在两个类方法之间传递NSString对象

时间:2011-12-27 20:59:18

标签: objective-c ios

我只是在Xcode 4.2中学习Objective-C。我想要做的应该是非常简单,但它让我疯了。我试图将NSString对象从一个类方法传递到另一个类方法,我已经能够成功通过NSArray。

我环顾四周,发现了如何在两个实例方法之间传递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 0x3c9c 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对象吗?如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

@"+"不是有效的谓词格式,因为无法使用指定的格式创建NSPredicate对象,所以它会随地吐痰。这与传递字符串无关。

快速翻过Predicate Programming Guide以查看谓词字符串应该是什么样的。

答案 1 :(得分:0)

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