【发布时间】:2010-12-12 14:26:31
【问题描述】:
我正试图对我的 if 语句产生影响。我从 Core Data db 中获取 qDiff (integer32) 并且一切正常,除了在 if 语句上受到打击:
NSString *diff;
NSArray *fetchedObjects = [qContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
NSLog(@"idQ: %@", [info valueForKey:@"idQ"]);
NSLog(@"qDiff: %@", [info valueForKey:@"qDiff"]); //<<<<<<<<<Print correct number
diff = [info valueForKey:@"qDiff"];
NSLog(@"diff: %@", diff); //<<<<<<<<<Print correct number
if ([diff isEqual:@"1"]) NSLog(@"EASY");
//if ([diff isEqualToString: @"2"]) NSLog(@"MEDIUM");
//if ([[info valueForKey:@"qDiff"] isEqualToString: @"3"]) NSLog(@"HARD"); //<<<<<<tried this first
NSLog(@"question: %@", [info valueForKey:@"question"]);
}
[fetchRequest release];
我一直在尝试不同的 If 语句,但它没有触发(打印 NSLog)。
谁能给我一个提示?
=========更新==========
我改成:
if ([diff isEqualToString:@"1"]) NSLog(@"EASY");
得到以下结果:
2010-12-12 15:39:49.321 XX_v2[2950:207] idQ: 0
2010-12-12 15:39:49.321 XX_v2[2950:207] qDiff: 1
2010-12-12 15:39:49.322 XX_v2[2950:207] 差异:1
2010-12-12 15:39:49.322 XX_v2[2950:207] -[_PFCachedNumber isEqualToString:]:无法识别的选择器发送到实例 0xa0f9008
2010-12-12 15:39:49.324 XX_v2[2950:207] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[_PFCachedNumber isEqualToString:]:无法识别的选择器发送到实例 0xa0f9008 '
==========更新#2=======
试过了:
if ([diff isEqual:@"1"]) NSLog(@"EASY");
输出没有区别:
2010-12-12 15:55:57.381 XX_v2[3151:207] idQ: 0
2010-12-12 15:55:57.382 XX_v2[3151:207] qDiff: 1
2010-12-12 15:55:57.382 XX_v2[3151:207] 差异:1
2010-12-12 15:55:57.382 XX_v2[3151:207] 问题:你想要一个新的吗?
但是,在调试器中我发现:
'diff' "变量不是 CFString"
========更新#3========
更新了上面的代码以显示 'diff' 的定义。
========UPDATE#4========
我终于用这句话解决了问题:
if ([[info valueForKey:@"qDiff"] intValue] == 1) NSLog(@"EASY");
【问题讨论】:
-
你在哪里声明
diff?
标签: iphone objective-c core-data if-statement