iOS NSPredicate不工作?
我有一个简单的谓词函数,如下所示:
[totalSentences addObjectsFromArray:[firstLangEx filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF contains[c] %@)", cellText]]];
这条线在我的一个应用程序中工作,但是当我将其复制到另一个应用程序并尝试testing时,它不起作用。
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中的一个string匹配,totalSentences也不会被任何字符填充。
什么可能导致这个?
编辑:
在NSLog
totalSentences总是显示没有内容,与始终显示至less一行的原始应用程序的输出相反。
firstLangEx始终具有从文本文件加载的正确内容(在两个应用程序中文件都是相同的)
cellText总是显示至less一个string。 (我在两个应用程序中testing相同的string。)
所以我不知道为什么totalSentences总是空的,至less应该填充一个匹配所有cellTextstring的string。
编辑:
我也以编程方式向totalSentences添加了一些string,可变数组运行良好。 任何想法为什么发生这种情况
编辑:
我已经testing了yuji的build议:
BOOL ok; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", cellText]; ok = [predicate evaluateWithObject: firstLangEx]; NSLog (@"Bool ok %d", ok);
结果总是“Bool ok 0”。
cellText是“巴比伦人”,从firstLangEx中的一行确实包含这个:“[古代巴比伦人可能写的方式]”。
那么我做错了什么?
编辑:
我使用这个代码
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; NSString *cellText = cell.textLabel.text;
在
- (void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath
为了提取string来匹配我的数组中的string。
然而,它永远不会被匹配,如
NSLog (@"cellText length %d", [cellText length]);
总是显示cellText总是有一个额外的字符,即使我的数组中没有空格或额外的字符,我的表视图加载。 例如,“Babylonian”是10个字符,日志在原始应用程序中显示了这个数量,但是在另一个应用程序中显示了11个字符,甚至两个应用程序都使用相同的文件来查看表格。
为什么会这样呢?
既然我的问题没有答案,我会回答,因为我find了解决办法。 如果yuji因为他的贡献而获奖,那将会很好。
我通过将提供表视图的文件的内容复制到具有其他名称的新文件中来解决这个问题,突然间,所有单元格的额外不可见字符都消失了。 这是常见的问题吗? 无论如何,现在解决了,耶! 感谢yuji。
- UIScrollView中的UICollectionView – >滚动顺序
- 使用Autolayout扩展tableView单元格导致UIViewAlertForUnsatisfiableConstraints