2017-07-12 7 views
0

ここでは、コアデータ2エンティティResistration &ユニークでリレーションシップネームはroshanです。リレーションシップは1対1です。 データを挿入しようとしましたが、コードが長すぎてコアデータに挿入データを実行するための短いコードを作成する手助けがありません。コアデータにデータを挿入

- (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 
+0

、Resgistrationとユニークのクラス定義では、これらのプロパティを追加する必要がありますResgistrationクラスコードは – ddb

+0

です。これはNSMAnagedObjectサブクラスです。更新されたコードを確認します。可能な小さなコードへの簡単な方法は –

答えて

0

あなたのユニークなポストこれはあなただけで少し良くそれを行うべきかですが、コアデータモデルで行ったように最初にあなたは

- (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") 
    } 
} 
+0

です。 –

+0

各ステートメントは、コードを減らすために魔法の方法は必要ありません、あなたはその方法でステートメントを簡略化することができます – ddb

+0

ohk。ありがとう、相棒。 –

関連する問題