我正在尝试使用现有实体(传入)集创建一个新实体并设置所有值。这是我在托管对象子类中使用的类方法:
+(FlightManifest *)getNextFlightManifestLegWithFlightManifest:(FlightManifest *)fm {
// Get the current context
NSManagedObjectContext *moc = [NSManagedObjectContext MR_contextForCurrentThread];
// Set a var to the cur leg so we can use it to increment the leg number later
NSInteger curLeg = [fm.leg intValue];
// Check to see if we already have the next leg saved
if ([self getFlightManifestWithTripID:fm.tripid andLeg:[NSNumber numberWithInt:curLeg + 1]] !=nil) {
return [self getFlightManifestWithTripID:fm.tripid andLeg:[NSNumber numberWithInt:curLeg + 1]];
} else {
// Create a new leg using the passed in FlightManifest for the values
FlightManifest *newFM = [FlightManifest MR_createInContext:moc];
// Set the value of the newly created object to the one passed in
newFM = fm;
// Increment the leg number
newFM.leg = [NSNumber numberWithInt:curLeg + 1];
// Save the object
[moc MR_save];
return newFM;
}
}
我这样调用它:
- (IBAction)nextLegButtonPressed:(id)sender {
currentFlight = [FlightManifest getNextFlightManifestLegWithFlightManifest:currentFlight];
self.legNumberLabel.text = [currentFlight.leg stringValue];
[self reloadLegsTableViewData];
}
发生的事情是我正在更改当前实体而不是创建新实体。关于我做错了什么的任何想法?
最佳答案
这看起来很明显,但这条线似乎很可疑:
// Set the value of the newly created object to the one passed in
newFM = fm;
这将使代码在使用现有的 fm 对象之后...并更改您尝试复制的对象...
关于iphone - 使用 MagicalRecord 使用当前实体创建新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937901/