在核心数据

时间:2017-07-12 08:36:07

标签: ios core-data insert

在这里,在我的核心数据中有两个实体Resgistration&独特和关系名称是roshan,关系是一对一的。 我尝试插入数据,但代码是如此冗长任何一个帮助创建短代码以执行核心数据中的插入数据。

- (IBAction)submitData:(id)sender {
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate manageObjectContext];
    Resgistration *newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Resgistration" inManagedObjectContext:context];
    //newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Resgistration" inManagedObjectContext:context];
    Unique *number = [NSEntityDescription insertNewObjectForEntityForName:@"Unique" inManagedObjectContext:context];

    //number = [NSEntityDescription insertNewObjectForEntityForName:@"Unique" inManagedObjectContext:context];

    [number setValue:_numberText.text forKey:@"number"];
    [number setValue:_studyText.text forKey:@"study"];
    NSMutableSet *roshanSet = [[NSMutableSet alloc] init];
    [roshanSet addObject:number];
    [newContact addRoshan:roshanSet];
    [newContact setValue:number forKey:@"roshan"];
    //[newContact setValue:_numberText.text forKey:@"number"];
    [newContact setValue:_nameText.text forKey:@"name"];
    [newContact setValue:_addressText.text forKey:@"address"];
    [newContact setValue:_emailText.text forKey:@"email"];
    [newContact setValue:_othernoText.text forKey:@"otheNo"];
    [newContact setValue:_hobbyText.text forKey:@"hobby"];
    [newContact setValue:_contactText.text forKey:@"contact"];
    NSError *error;
    [context save:&error];

    _nameText.text = @"";
    _addressText.text = @"";
    _emailText.text = @"";
    _othernoText.text = @"";
    _hobbyText.text = @"";
    _contactText.text = @"";
    _numberText.text = @"";

    TableViewController *table = [self.storyboard instantiateViewControllerWithIdentifier:@"TableViewController"];
    [self.navigationController pushViewController:table animated:YES];
}

唯一+ CoreDataClass.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Resgistration;

NS_ASSUME_NONNULL_BEGIN

@interface Unique : NSManagedObject

@end

NS_ASSUME_NONNULL_END

#import "Unique+CoreDataProperties.h"

唯一+ CoreDataClass.m

#import "Unique+CoreDataClass.h"
#import "Resgistration+CoreDataClass.h"
@implementation Unique

@end

Resgistration + CoreDataClass.h

import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Unique;

NS_ASSUME_NONNULL_BEGIN

@interface Resgistration : NSManagedObject

@end

NS_ASSUME_NONNULL_END

#import "Resgistration+CoreDataProperties.h"

Resgistration + CoreDataClass.m

#import "Resgistration+CoreDataClass.h"
#import "Unique+CoreDataClass.h"
@implementation Resgistration

@end

1 个答案:

答案 0 :(得分:0)

这就是你应该如何做得更好一点,但首先你需要在Resgistration和Unique的类定义中添加这些属性,就像你在核心数据模型中所做的那样

- (IBAction)submitData:(id)sender {
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate manageObjectContext];
    Resgistration *newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Resgistration" inManagedObjectContext:context];
    //newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Resgistration" inManagedObjectContext:context];
    Unique *number = [NSEntityDescription insertNewObjectForEntityForName:@"Unique" inManagedObjectContext:context];

    //number = [NSEntityDescription insertNewObjectForEntityForName:@"Unique" inManagedObjectContext:context];

    number.number = _numberText.text;
    number.study = _studyText.text;
    NSMutableSet *roshanSet = [[NSMutableSet alloc] init];
    [roshanSet addObject:number];
    [newContact addRoshan:roshanSet];
    newContact.roshan = number;
    newContact.name = _nameText.text;
    newContact.address = _addressText.text;
    newContact.email = _emailText.text;
    newContact.otheNo = _othernoText.text;
    newContact.hobby = _hobbyText.text;
    newContact.contact = _contactText.text;
    NSError *error;
    [context save:&error];

    if(error == nil)
    {
        _nameText.text = @"";
        _addressText.text = @"";
        _emailText.text = @"";
        _othernoText.text = @"";
        _hobbyText.text = @"";
        _contactText.text = @"";
        _numberText.text = @"";

        TableViewController *table = [self.storyboard instantiateViewControllerWithIdentifier:@"TableViewController"];
        [self.navigationController pushViewController:table animated:YES];
    }
    else
    {
        NSLog("error")
    }
}