2012-02-13 101 views
1

我有如下一个简单的断言函数:iOS NSPredicate不工作?

[totalSentences addObjectsFromArray:[firstLangEx filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF contains[c] %@)", cellText]]]; 

这条线在我的应用程序的一个作品,但是当我复制到这个另一个应用程序,并试图测试这个它不工作。

totalSentences is a global NSMutableArray 

firstLangEx is a local NSArray filled with several lines 

cellText is NSString *cellText = cell.textLabel.text; 

所有这些代码都存在于我的原始应用程序和工作中。他们在方法- (void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath

实施即使cellText匹配在另一个应用程序firstLangEx中的一个字符串,totalSentences永远不会填充任何字符。

这是什么原因造成的?


编辑:

在的NSLog

totalSentences总是显示没有内容,相反在原始应用程序,它总是显示至少一个线路的输出。

firstLangEx也总是从一个文本文件加载正确的内容(在这两个应用程序的文件是一样的)

CELLTEXT也始终显示至少一个字符串。 (我在这两个应用程序中测试相同的字符串。)

所以我不知道为什么totalSentences总是空的,它应该填充至少一个匹配所有cellText字符串的字符串。


编辑:

我还添加了一些字符串totalSentences编程和可变数组效果很好。任何想法为什么发生这种情况


编辑:

为娱记建议我已经测试:

BOOL ok; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", cellText]; 

ok = [predicate evaluateWithObject: firstLangEx]; 

NSLog (@"Bool ok %d", ok); 

的结局总是 “布尔OK 0”。

cellText是“巴比伦人”,firstLangEx的一行确实包含了这个:“[E:古代巴比伦人可能写的。”]。

那么我做错了什么?


编辑:

我为了提取字符串匹配从我的数组的字符串使用此代码

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *cellText = cell.textLabel.text; 

- (void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

但是,它永远不会被匹配,如

NSLog (@"cellText length %d", [cellText length]); 

总是显示CELLTEXT始终一个额外的字符,即使有,我的表视图是由加载在我的数组没有空格或额外的字符。例如,“Babylonian”是10个字符,并且日志在原始应用程序中显示了该数量,但在另一个应用程序中显示了11个字符,即使这两个应用程序也使用相同的文件来查看表格。

为什么会发生这种情况?

+0

@co感谢您的即时评论。我更新了我的问题。请检查一下。 – wagashi 2012-02-13 22:01:03

+0

您应该尝试在'totalSentences'内找到与您的谓词相匹配的特定'NSString'。然后,尝试在NSPredicate的实例方法'evaluateWithObject:'上使用谓词。如果评估结果为false,请仔细查看谓词和实际字符串,也可以将它们发布到此处。 – yuji 2012-02-14 09:59:33

+0

@yuji问题是totalSentences从来没有填充任何东西。我将检查evaluateWithObject。 – wagashi 2012-02-14 15:12:07

回答

0

既然我的问题没有答案,我会回答,因为我找到了解决方案。如果yuji因为他的贡献而获奖,那将会很好。

我解决了这个问题,通过将提供表格视图的文件的内容复制到具有其他名称的新文件中,并且所有单元格的额外不可见字符突然消失。这是常见问题吗?无论如何,它现在解决了,耶!感谢yuji。