我有如下一个简单的断言函数:
[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始终一个额外的字符,即使有,我的表视图是由加载在我的数组没有空格或额外的字符。 例如,“巴比伦”是10个字符,并在日志显示,在原始应用这一数额,但它显示11个字符的其他应用程序,甚至是应用程序都使用相同的文件表视图。
为什么会出现这种情况?