我错过了那条我认为自己曾经拥有的东西的船,希望有人可以提供帮助。
我正在使用Xcode 4.4版,我的项目正在使用Core Data,Storyboards和ARC。
我的项目有以下3个实体。
一切都适用于Livestock和Notes实体。但是,当我尝试将数据保存到Taxonomy实体时,没有任何反应。我没有收到任何错误,但数据未保存。
我没有使用数组获取结果吗?基于我的谓词,我期待只返回一个对象,所以我认为我不需要一个数组。下面是我执行保存的代码。我已经验证了数据是从视图的文本变量传入的。
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"Livestock" inManagedObjectContext:managedObjectContext];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"tank == %@ AND type == %@ AND name == %@", self.detailTank, self.detailType, self.detailName];
NSError *error = nil;
Livestock *livestock = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] lastObject];
if (error) {
NSLog(@"TaxonViewController: saveTaxonomy: Retrieving Livestock Record for saving: error = %@", error);
}
Taxonomy *taxonomy = livestock.taxonChildren;
taxonomy.kingdom = self.kingdom.text;
taxonomy.phylum = self.phylum.text;
taxonomy.classs = self.classs.text;
taxonomy.order = self.order.text;
taxonomy.family = self.family.text;
taxonomy.genus = self.genus.text;
taxonomy.species = self.species.text;
taxonomy.common = self.common.text;
taxonomy.livestockParent = livestock;
error = nil;
if (![managedObjectContext save:&error]) {
NSLog(@"Taxonomy save error. error = %@, userInfo = %@", error, [error userInfo]);
}
非常感谢任何见解!谢谢!
更新1:
修改代码以测试NULL taxonChildren值。这解决了我。谢谢杰西!
if (livestock.taxonChildren == NULL) {
Taxonomy *taxonomy = [NSEntityDescription insertNewObjectForEntityForName:@"Taxonomy" inManagedObjectContext:managedObjectContext];
taxonomy.kingdom = self.kingdom.text;
taxonomy.phylum = self.phylum.text;
taxonomy.classs = self.classs.text;
taxonomy.order = self.order.text;
taxonomy.family = self.family.text;
taxonomy.genus = self.genus.text;
taxonomy.species = self.species.text;
taxonomy.common = self.common.text;
taxonomy.livestockParent = livestock;
}
else {
Taxonomy *taxonomy = livestock.taxonChildren;
taxonomy.kingdom = self.kingdom.text;
taxonomy.phylum = self.phylum.text;
taxonomy.classs = self.classs.text;
taxonomy.order = self.order.text;
taxonomy.family = self.family.text;
taxonomy.genus = self.genus.text;
taxonomy.species = self.species.text;
taxonomy.common = self.common.text;
taxonomy.livestockParent = livestock;
}
答案 0 :(得分:1)
你的livestock.taxonChildren
是否为零?您必须先将该对象的实例插入到您的上下文中;它不会自动创建一个,即使是一对一的关系。
请注意,您不应该测试这样的错误:
if (error) { ... }
因为获取请求成功时error
可能是垃圾。您应该测试返回值:
NSArray *results = [managedObjectContext executeFetchRequest...]
if (!results) { ... }