iOS的NSPredicate不工作?(iOS NSPredicate not working?)

2019-09-28 19:04发布

我有如下一个简单的断言函数:

[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个字符的其他应用程序,甚至是应用程序都使用相同的文件表视图。

为什么会出现这种情况?

Answer 1:

由于没有回答我的问题,我会回答,因为我已经找到了解决办法。 这将是很好,如果娱记将被授予他的贡献。

我解决它通过复制养活表视图到新的文件与其他名称的文件的内容,突然所有单元额外的不可见字符消失。 这是常见的问题? 总之,现在解决了,耶! 由于虞姬。



文章来源: iOS NSPredicate not working?