【发布时间】:2023-03-31 10:31:01
【问题描述】:
这是我的数据模型:
这是我的代码:
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *failedBankInfo = [NSEntityDescription insertNewObjectForEntityForName:@"FailedBankInfo" inManagedObjectContext:context];
[failedBankInfo setValue:@"Test Bank" forKeyPath:@"name"];
[failedBankInfo setValue:@"Testville" forKeyPath:@"city"];
[failedBankInfo setValue:@"Testland" forKeyPath:@"state"];
NSManagedObject *failedBankDetails = [NSEntityDescription insertNewObjectForEntityForName:@"FailedBankDetail" inManagedObjectContext:context];
[failedBankDetails setValue:[NSDate date] forKey:@"closeDate"];
[failedBankDetails setValue:[NSDate date] forKey:@"updateDate"];
[failedBankDetails setValue:[NSNumber numberWithInt:12345] forKey:@"zip"];
[failedBankDetails setValue:failedBankInfo forKeyPath:@"info"];
[failedBankInfo setValue:failedBankDetails forKey:@"detail"];
NSError *error;
if(![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
NSLog(@"Name: %@", [info valueForKey:@"name"]);
NSManagedObject *details = [info valueForKey:@"details"];
NSLog(@"Zip: %@", [details valueForKey:@"zip"]);
}
这是一个跟踪日志:
2014-07-14 14:56:57.080 FailedBankCD[87194:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-many relationship: property = "detail"; desired type = NSSet; given type = NSManagedObject; value = <NSManagedObject: 0x8c452d0> (entity: FailedBankDetail; id: 0x8c63740 <x-coredata:///FailedBankDetail/t5A5AD25D-C89A-4FA2-A776-C91A3F0413083> ; data: {
closeDate = "2014-07-14 10:56:55 +0000";
info = "0x8c60b40 <x-coredata:///FailedBankInfo/t5A5AD25D-C89A-4FA2-A776-C91A3F0413082>";
updateDate = "2014-07-14 10:56:55 +0000";
zip = 12345;
}).'
*** First throw call stack:
(
错误发生就行了:
[failedBankInfo setValue:failedBankDetails forKey:@"detail"];
问题的原因是什么,我该如何解决?
【问题讨论】:
-
谢谢。我知道我可以将我的关系从“对多”更改为“对一”,并且我的代码将起作用。但是我的知识不足以修改我的代码以将其与“对多”关系一起使用。所以我会感谢任何提示。
标签: objective-c core-data