神奇的记录 - 在循环中向实体添加值
Posted
技术标签:
【中文标题】神奇的记录 - 在循环中向实体添加值【英文标题】:Magical Record - adding values to entity in loop 【发布时间】:2015-08-14 10:09:09 【问题描述】:我的 Magical Record 代码有问题:
Collection *collection = [Collection MR_createEntity];
[collection setValue:name forKey:@"name"];
[collection setValue:date forKey:@"date"];
[collection setValue:amount forKey:@"amount"];
for (Person *person in self.selectedPeople)
Payment *payment = [Payment MR_createEntity];
[payment setValue:person forKey:@"person"];
[payment setValue:collection forKey:@"collection"];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error)
if (!success)
NSLog(@"Error: %@", [error localizedDescription]);
else
NSLog(@"Item %@ added to database", collection.name);
];
对于用户选择的每个人,我想在数据库中创建付款。我正在循环中这样做。我的问题是只有最后一次付款有收款。
例如,当我有 3 个人时,它看起来像这样:
Payment 1 - person:John, collection: nil
Payment 2 - person:Bill, collection: nil
Payment 3 - person:Mark, collection: Paper
谁能告诉我为什么会这样?
【问题讨论】:
【参考方案1】:我的猜测是,这是从收款到付款的关系。您正在尝试使用从收款到付款的多对一,但您的核心数据模型中可能只有一对一设置。
我不确定从收款到付款的多对一关系是否是个好主意。您可能希望为每个集合创建一个唯一实体,但这完全取决于您的模型。
for (Person *person in self.selectedPeople)
// Create a new collection entity for each payment.
Collection *collection = [Collection MR_createEntity];
[collection setValue:name forKey:@"name"];
[collection setValue:date forKey:@"date"];
[collection setValue:amount forKey:@"amount"];
Payment *payment = [Payment MR_createEntity];
[payment setValue:person forKey:@"person"];
[payment setValue:collection forKey:@"collection"];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error)
if (!success)
NSLog(@"Error: %@", [error localizedDescription]);
else
NSLog(@"Item %@ added to database", collection.name);
];
【讨论】:
我在核心数据模型中进行了一对一设置,现在一切正常,谢谢以上是关于神奇的记录 - 在循环中向实体添加值的主要内容,如果未能解决你的问题,请参考以下文章