魔法记录 - 为循环中的实体添加值
Magical Record - adding values to entity in loop
我的 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
谁能告诉我为什么会这样?
我的猜测是从收款到付款的关系。您正在尝试使用从收款到付款的多对一模式,但您的 Core Data 模型中可能只有一对一设置。
我不确定从收款到付款的多对一关系是否是一个好主意。您可能想为每个集合创建一个唯一的实体,但这完全取决于您的模型。
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);
}];
我的 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
谁能告诉我为什么会这样?
我的猜测是从收款到付款的关系。您正在尝试使用从收款到付款的多对一模式,但您的 Core Data 模型中可能只有一对一设置。
我不确定从收款到付款的多对一关系是否是一个好主意。您可能想为每个集合创建一个唯一的实体,但这完全取决于您的模型。
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);
}];