我目前正在研究核心數據調查應用程序。現在,當我的核心數據實體首次被程序創建後,我的程序遇到了問題。我有一個'else'語句,這是我第一次保存它。值被保存,但應用程序崩潰。然後我可以重新啓動應用程序,並且NSManagedObject正常工作。問題在於我的其他陳述,但我無法弄清楚什麼是錯的。第一次爲核心數據調用「無」保存方法 - 爲什麼?
下面是代碼:
- (IBAction)save:(id)sender {
if (rootController != nil) {
if (team != nil) {
[team setValue:name.text forKey:@"name"]; //UITextfield -> NSString
[team setValue:teamNumber.text forKey:@"teamNumber"]; //UITextfield -> NSString
[team setValue:[NSNumber numberWithInt:totalRank] forKey:@"totalRankValue"]; //Int -> NSNumber
[team setValue:driveTrain.text forKey:@"driveTrain"]; //UITextfield -> NSString
[team setValue:[NSNumber numberWithInt:autonomousRank] forKey:@"autonomousRankValue"]; //Int -> NSNumber
[team setValue:[NSNumber numberWithInt:robotSpeedRank] forKey:@"robotSpeedRankValue"]; //Int -> NSNumber
[team setValue:[NSNumber numberWithInt:minibotRank] forKey:@"minibotSpeedRankValue"]; //Int -> NSNumber
[team setValue:[NSNumber numberWithInt:grabberRank] forKey:@"grabberRankValue"]; //Int -> NSNumber
[rootController saveContext];
NSLog(@"Save works - team is not nil");
//Begin debug
NSError* error;
if(![[team managedObjectContext] save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
NSLog(@" %@", [error userInfo]);
}
//End debug
}
else {
[rootController insertTeamWithName:name.text
teamNumber:teamNumber.text
driveTrain:driveTrain.text
autonomousRankValue:[NSNumber numberWithInt:autonomousRank]
grabberRankValue:[NSNumber numberWithInt:grabberRank]
minibotSpeedRankValue:[NSNumber numberWithInt:minibotRank]
robotSpeedRankValue:[NSNumber numberWithInt:robotSpeedRank]
totalRankValue:[NSNumber numberWithInt:totalRank]];
NSLog(@"Team is nil");
//Begin debug
NSError* error;
if(![[team managedObjectContext] save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
else {
NSLog(@" %@", [error userInfo]);
}
}
//End debug
}
}
[self dismissModalViewControllerAnimated:YES];
}
任何幫助是極大的讚賞。
感謝,
凱文
我認爲包括崩潰的細節也是有幫助的。 – paulbailey 2011-04-19 06:45:59