将UISegmentedControl的结果添加到核心数据实体中的属性

时间:2013-10-14 14:50:49

标签: ios core-data tableview uisegmentedcontrol

我在基本的第一个申请中取得了很好的进展;我是App开发的新手,但已经有一段时间了。我试图找到一个对我来说没有意义的问题的答案。

我有一个UITableViewController,其中有一个加号按钮,指向ModalViewController;这要求用户用文本填写3个字段并选择“买或卖”,我在UI中设置为UISegmentedController,第一个按钮说“买”,第二个按钮说“已卖”。

我添加三个文本字段值的类包含以下代码,当我单击“保存”时,它将返回UITableView并显示键入的内容。

我想将细胞设置为Bought的一种颜色和Sold的一种颜色。我可以使用cellForRow等轻松地做到这一点。问题是数据模型和我需要帮助的代码。

我有一个包含以下实体的数据模型:

  • 交易,人,场合及金额

交易与人,场合和金额有关系。它还有一个“status”属性,它是UISegmentedControl的结果。

我将这个设置为什么类型是我的第一个问题? BOOL?

接下来,我可以/应该使用哪种代码从用户那里获取该值并将其添加到数据库中?

这是textFields的当前保存方法:

- (IBAction)save:(id)sender
{
    NSManagedObjectContext *context = [self managedObjectContext];
    NSManagedObject *transaction = [NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:context];
    NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
    NSManagedObject *occasionEvent = [NSEntityDescription insertNewObjectForEntityForName:@"Occasion" inManagedObjectContext:context];
    NSManagedObject *amountType = [NSEntityDescription insertNewObjectForEntityForName:@"Gift" inManagedObjectContext:context];
    [person setValue:self.nameTextField.text forKey:@"name"];
    [occasionEvent setValue:self.occasionTextField.text forKey:@"title"];
    [amountType setValue:self.amountTextField.text forKey:@"amount"]; 
    [transaction setValue:person forKey:@"whoBy"];
    [transaction setValue:occasionEvent forKey:@"occasion"];
    [transaction setValue:amountType forKey:@"gifting"];    
    NSError *error = nil;
    if (![context save:&error])
    {
        NSLog(@"Can't save! %@ %@", error, [error localizedDescription]);

    }
    [self dismissViewControllerAnimated:YES completion:nil];   
}

任何帮助都会受到大力赞赏!

1 个答案:

答案 0 :(得分:1)

  

我将这个设置为什么类型是我的第一个问题? BOOL?

如果只有两个选项,则可以使用布尔值。如果您这样做,我建议将其名称更改为比status更具说服力的名称,例如wasBought。在我看来,使用枚举更好,就像在this answer中一样。

  

接下来,我可以/应该使用哪种代码来获取该值   用户并将其添加到数据库?

你可以这样做:

[transaction setValue:@(self.segmentedControl.selectedSegmentIndex == 0) forKey:@"wasBought"];

您可能还想了解subclassing NSManagedObject's (section "Custom Managed Object Classes")