没有命中if语句 [英] no hit on if-statement
问题描述
我想获得一个命中我的if语句。我从Core Data数据库获取qDiff(整数32),一切正常,除非得到一个命中的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]); //<<<<<<<打印正确的数字
diff = [info valueForKey:@qDiff];
NSLog(@diff:%@,diff);如果([diff isEqual:@1])NSLog(@EASY),则打印正确的数字
;
// if([diff isEqualToString:@2])NSLog(@MEDIUM);
// if([[info valueForKey:@qDiff] isEqualToString:@3])NSLog(@HARD); //<<<<<<<试过这个第一个
NSLog(@question:%@,[info valueForKey:@question]);
}
[fetchRequest release];
我一直在尝试不同的if语句,但它不触发(打印NSLog)。
任何人可以给我一个提示?
========= UPDATE ==========
我改为:
if([diff isEqualToString:@1])NSLog 简单);
得到以下结果:
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] diff: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',reason:' - [_ PFCachedNumber isEqualToString:]:unrecognized selector sent to instance 0xa0f9008'
=== ======= UPDATE#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] diff:1
2010-12-12 15:55:57.382 XX_v2 [3151:207]问题:你想要新的吗?
但是,在调试器中我发现:
'diff'变量不是CFString
==== ==== UPDATE#3 ========
更新上面的代码以显示'diff'的定义。
======== UPDATE#4 ========
我终于用这个语句解决了这个问题:
if [[info valueForKey:@qDiff] intValue] = 1)NSLog(@EASY);
您正在处理 qDiff
作为NSString,而Core Data将其保存为整数32,并将其显示为NSNumber。尝试这样:
if([diff isEqualToNumber:[NSNumber numberWithInt:1]])NSLog(@EASY);
或:
if([diff intValue] == 1)NSLog(@EASY);
I am trying to get a hit on my if-statement. I fetch qDiff (integer32) from the Core Data db and everything works except get a hit on the if-statements:
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];
I have been trying different If-statements but it does not trigger (print the NSLog).
Anyone that can give me a hint?
=========UPDATE==========
I changed to:
if ([diff isEqualToString:@"1"]) NSLog(@"EASY");
And got the following:
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] diff: 1
2010-12-12 15:39:49.322 XX_v2[2950:207] -[_PFCachedNumber isEqualToString:]: unrecognized selector sent to instance 0xa0f9008
2010-12-12 15:39:49.324 XX_v2[2950:207] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_PFCachedNumber isEqualToString:]: unrecognized selector sent to instance 0xa0f9008'
==========UPDATE #2=======
Did try:
if ([diff isEqual:@"1"]) NSLog(@"EASY");
no difference in output:
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] diff: 1
2010-12-12 15:55:57.382 XX_v2[3151:207] question: Do you want a new?
However, in the debugger i found:
'diff' "Variable not a CFString"
========UPDATE#3========
Updated the code above to show definition of 'diff'.
========UPDATE#4========
I did finally solve the problem with this statement:
if ([[info valueForKey:@"qDiff"] intValue] == 1) NSLog(@"EASY");
You are treating qDiff
as an NSString while Core Data saves it as an integer32 and exposes it as an NSNumber. Try this:
if ([diff isEqualToNumber:[NSNumber numberWithInt:1]]) NSLog(@"EASY");
Or this:
if ([diff intValue] == 1) NSLog(@"EASY");
这篇关于没有命中if语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!