我在我的应用程序中使用Core Data。我有一个名为 PINCode 的属性,其属性为 Int64 。 现在,在我的应用程序中,我从文本字段中取出PIN码,将其转换为 NSNumber ,并尝试将其存储为实体的属性值。但我无法这样做。除此之外在控制台上显示: - 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'属性的值不可接受的类型:property =“PINCode”;所需类型= NSNumber;给定type = NSCFString;值= 121。'
以下是代码: - (转换为NSNumber): -
NSString *str= txtPINCode.text;
NSNumber *num = [[NSNumber alloc]init];
int tempNum = [str intValue];
num = [NSNumber numberWithInt:tempNum];
(存储在核心数据实体中): -
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSManagedObject *newContact;
newContact = [NSEntityDescription insertNewObjectForEntityForName:@"MemberTable" inManagedObjectContext:context];
[newContact setValue:num forKey:@"PINCode"];
此时应用程序崩溃。我无法找到崩溃的原因。我还尝试通过以下代码检查转换: -
NSNumber *testNumber = [[NSNumber alloc]init];
id test = num;
BOOL testMe = [test isKindOfClass:(Class)testNumber];
任何人都可以帮我吗? 提前谢谢。
答案 0 :(得分:0)
嗯,第一个代码块有点奇怪。在第2行中,您分配了一个NSNumber
,然后在第4行中从第2行泄漏NSNumber
并获得一个新的NSNumber
对象(自动释放)。
那么,当你来到第二个代码块时,这些代码块是如何相关的? num
(来自代码块1)可能指向代码块2中的垃圾。
尝试删除代码块1的第2行,并在旧行4中写下以下内容:
NSNumber *num = [[NSNumber alloc] initWithInt:tempNum];
不要忘记稍后发布。