gpt4 book ai didi

objective-c - 核心数据是否在后台进行自己的类型转换?

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:04 25 4
gpt4 key购买 nike

我正在对两个列表进行简单比较,以查看“评估”列表中的哪些项目包含在更大的“目标”列表中。我通过解析两个 CSV 文件并将所有内容存储为字符串来即时获取数据。我成功地将数据导入到数据存储中,并且可以毫无问题地获取实体列表

当我真正进行搜索时,问题就来了。本质上,我是在目标列表中的评估列表中寻找 1234 形式的短 ISBN,其形式为 1234-5。我正在使用的谓词是我正在使用 [NSString stringWithFormat:@"%@ CONTAINS %@", kOC_Target_PrintBookCode, evalIsbn] 形式的 CONTAINS 比较

我得到的错误如下(由我的 NSLog 抓取)

NSInvalidArgumentException: Can't look for value (1494) in string (49885); value is not a string

我的印象是,即使 ISBN 是从 NSString 中读取的,并且 Core Data 存储将数据点指定为字符串,但无论出于何种原因,Core Data 仍在后台使用该值执行某些操作它认为合适。有什么想法吗?


这里是相关的流程逻辑(虽然我用这个词有点可疑)代码。除非代码中另有说明,否则所有被操作和/或存储的值都是 NSString:

NSArray *evalBooks = [self getEntitiesByName:kOC_EntityName_EvalBook 
usingPredicateValue:[NSString stringWithFormat:@"%@ > \"\"", kOC_Eval_Bookcode]
withSubstitutionVariables:nil
inModel:[self managedObjectModel]
andContext:[self managedObjectContext]
sortByAttribute:nil];

if ( ( !evalBooks ) || ( [evalBooks count] == 0 ) ) {
// we have problem
NSLog(@"( !evalBooks ) || ( [evalBooks count] == 0 )");
return;
}

[evalBooks retain];

int firstEvalBook = 0;
int thisEvalBook = firstEvalBook;
int lastEvalBook = [evalBooks count]; NSLog(@"lastEvalBook: %i", lastEvalBook);
for (thisEvalBook = firstEvalBook; thisEvalBook < lastEvalBook; thisEvalBook++) {

NSManagedObject *evalBook = [[evalBooks objectAtIndex:thisEvalBook] retain];

NSString *rawIsbn = [[evalBook valueForKey:kOC_Eval_Bookcode] retain];
NSString *isbnRoot = [[self getIsbnRootFromIsbn:rawIsbn] retain];
// this is a custom method I created and use elsewhere without any issues.
NSArray *foundBooks = [self getEntitiesByName:kOC_EntityName_TargetBook
usingPredicateValue:[NSString stringWithFormat:@"%@ CONTAINS %@", kOC_Target_PrintBookCode, isbnRoot]
withSubstitutionVariables:nil
inModel:[self managedObjectModel]
andContext:[self managedObjectContext]
sortByAttribute:kOC_Target_PrintBookCode];

if ( foundBooks != nil ) {

[foundBooks retain];
NSLog(@"foundBooks: %lu", [foundBooks count]);

} else {

}

最佳答案

如果您将谓词构建为 NSString,我相信

[NSString stringWithFormat:@"%@ CONTAINS %@", kOC_Target_PrintBookCode, isbnRoot]

实际上应该是

[NSString stringWithFormat:@"%@ CONTAINS '%@'", kOC_Target_PrintBookCode, isbnRoot]

您似乎混淆了 predicateWithFormat:stringWithFormat: 的工作方式。

关于objective-c - 核心数据是否在后台进行自己的类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com