我有一个应用程序,我将日文文本存储在coredata sqlite数据库中。填充数据似乎工作正常(据我所知),但是当我搜索任何字符串字段时,它不返回任何记录。如果我在我的一个整数字段上搜索它。
字符串数据是unicode(即日文字符),所以我的问题是核心数据不适用于Unicode吗?似乎不太可能。是否需要做一些特殊的事情才能使搜索(获取)有效?
填充数据的代码如下所示:
WordProgress *newWordProgress = [NSEntityDescription insertNewObjectForEntityForName:@"WordProgress" inManagedObjectContext:progressContext];
newWordProgress.kanji = kanji;
newWordProgress.kanji = kana;
newWordProgress.senseIndex = [NSNumber numberWithInt:senseIndex];
newWordProgress.skillType = [NSNumber numberWithInt:skillType];
newWordProgress.leitnerDeck = leitnerDeck;
newWordProgress.dateLastShown = lastShownDate;
测试我的提取的代码,如下所示:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"kanji = %@", @"彼"];
NSFetchRequest *testRequest = [[NSFetchRequest alloc] init];
[testRequest setPredicate:pred];
[testRequest setEntity:[NSEntityDescription entityForName:@"WordProgress" inManagedObjectContext:progressContext]];
NSArray *results = [progressContext executeFetchRequest:testRequest error:&error];
但是当我知道记录已填充时,不会返回任何记录。
刚试过这个,甚至这似乎都失败了。我确信我必须做一些根本错误的事情:
WordProgress *newWordProgress = [NSEntityDescription insertNewObjectForEntityForName:@"WordProgress" inManagedObjectContext:progressContext];
newWordProgress.kanji = @"彼";
newWordProgress.kanji = kana;
newWordProgress.senseIndex = [NSNumber numberWithInt:senseIndex];
newWordProgress.skillType = [NSNumber numberWithInt:skillType];
newWordProgress.leitnerDeck = leitnerDeck;
newWordProgress.dateLastShown = lastShownDate;
NSPredicate *pred = [NSPredicate predicateWithFormat:@"kanji = %@", @"彼"];
NSFetchRequest *testRequest = [[NSFetchRequest alloc] init];
[testRequest setPredicate:pred];
[testRequest setEntity:[NSEntityDescription entityForName:@"WordProgress" inManagedObjectContext:progressContext]];
NSArray *results = [progressContext executeFetchRequest:testRequest error:&error];
答案 0 :(得分:0)
这不是Unicode问题,它会影响任何字符串NSPredicate
错误。你有:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"kanji = '%@'", @"彼"];
单引号存在问题。您正在创建一个在数据中查找文字%@
的谓词。单引号会阻止@"彼"
替换%@
。取出单引号,它应该按预期工作:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"kanji = %@", @"彼"];
答案 1 :(得分:0)
我的上帝,我完全是智障,对不起。多做一些游戏,我看到了这条线......
newWordProgress.kanji = kanji;
newWordProgress.kanji = kana;
卫生署!它完全覆盖了我的关键领域。它本应该读......
newWordProgress.kanji = kanji;
newWordProgress.kana = kana;
感谢回复,伙计们。遗憾!