0

id と name の 2 つの属性を持つカテゴリ エンティティを含むコア データ ファイルがあります。

これらの 2 つの属性から値を取得して更新する方法を教えてください。私は試して失敗しました。

これが私の現在のコードです:

- (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];
    }
}

うまくいくと思いますが、これら2つの属性から値を取得できません。

誰かが私を助けることができれば、それは素晴らしいことです。ありがとう。

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 に答える