0

我有一个包含类别实体的核心数据文件,它有 2 个属性 - id 和 name。

有人可以为我提供一种从这两个属性中获取值并更新它们的方法。我已经尝试过并且失败了。

这是我当前的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addCategory:)];
    self.navigationItem.rightBarButtonItem = addButtonItem;

}

-(IBAction)addCategory:(id)sender
{
    UIAlertView *addCategoryAlertView = [[UIAlertView alloc] initWithTitle:@"Add Category" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil];
    addCategoryAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
    self.textField = [addCategoryAlertView textFieldAtIndex:0];
    self.textField.placeholder = @"Enter category name";
    [addCategoryAlertView show];
}

并在 UIAlertView Delegate 方法中

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

我必须为这些类别添加价值。

这是我现在的做法:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{

    if (buttonIndex == kAddCategoryButtonIndex) {
        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        NSManagedObjectContext *context = [appDelegate managedObjectContext];
        NSError *error;

        //NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Categories" inManagedObjectContext:context];
        //[fetchRequest setEntity:entity];
        [entity setValue:self.textField.text forKey:@"name"];
        NSLog(@"%@",[entity valueForKey:@"name"]);
        [context save:&error];
    }
}

而且我认为它有效,但我无法从这两个属性中获取值。

如果有人可以帮助我,那就太好了。谢谢。

4

1 回答 1

0

方法

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context

回报NSManagedObject,不是NSEntityDescription

所以,这样做

NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Categories" inManagedObjectContext:context];
[managedObject setValue:self.textField.text forKey:@"name"];

你应该很高兴。

于 2012-07-30T04:06:05.910 回答