【发布时间】:2011-12-07 20:07:16
【问题描述】:
我有这段让我发疯的代码。它是一个显示 4 个属性的 cellForRowAtIndexPath,其中 2 个是 NSStrings,2 个是 NSNumber:
//THIS LOGS THE OBJECT BEFORE PROCESSING
NSLog(@"NO DATE EDITING");
NSLog(@"eFK: %@, eFN: %@",editedFieldKey, editedFieldName);
NSLog(@"editedObject vWA is:%@", editedObject);
NSLog(@"Is of type NSString?: %@", ([editedFieldKey isKindOfClass:[NSString class]])? @"Yes" : @"No");
//THIS TESTS TO SEE IF ITS A NSSTRING
if ([editedFieldName isKindOfClass:[NSSTRING class]]) {
NSLog(@"its nsstring");
textField.text = [editedObject valueForKey:editedFieldKey];
NSLog(@"its NOT nsstring");
}
} else {
//ELSE ITS A NUMBER SO GET ITS STRING VALUE BEFORE ASSIGNING
textField.text = [[editedObject valueForKey:editedFieldKey] stringValue];
// And we set the switch to ON if YES, OFF if NO...
if ([editedObject valueForKey:editedFieldKey]) {
NSLog(@"itemreceived equal to 1");
itemReceived.on = YES;
} else {
NSLog(@"itemreceived equal to 0");
itemReceived.on = NO;
}
[textField becomeFirstResponder];
我有 4 个字段,2 个 NSStrings 和 2 个 NSNumbers。当我点击字符串字段时,我得到一个字符串并且它工作正常。但是,如果我单击其中一个数字字段,我会得到一个字符串,并且 NSCFNumber isNaturallyRTL...无法识别的选择器发送到以下位置的实例:
textField.text = [editedObject valueForKey:editedFieldKey];
为什么我的测试失败了?为什么即使我选择了一个不是字符串的数字,应用程序也会通过第一个 if 条件,就好像它是一个字符串一样?
【问题讨论】:
-
您需要编辑您的问题以包含您的程序打印的完整、准确的错误消息,而不是只告诉我们其中的一部分。
标签: objective-c nsstring nsnumber