2013-10-17 2 views
0

나는 다음 문제가 이름, 버전, 회사; 내 DetailController에서핵심 데이터 및 NSManagedObject

나는이 추가 한 :

- (NSManagedObjectContext *)managedObjectContext { 
    NSManagedObjectContext *context = nil; 
    id delegate = [[UIApplication sharedApplication] delegate]; 
    if ([delegate performSelector:@selector(managedObjectContext)]) { 
    context = [delegate managedObjectContext]; 
    } 
    return context; 
} 

그리고 버튼에 내가 데이터를 저장하려면 클릭

- (IBAction)save:(id)sender { 
NSManagedObjectContext *context = [self managedObjectContext]; 

//Create a new managed object 
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context]; 
/* 


[newDevice setValue:self.nameTextField.text forKey:@"name"]; 
[newDevice setValue:self.versionTextField.text forKey:@"version"]; 
[newDevice setValue:self.companyTextField.text forKey:@"company"]; 

NSError *error = nil; 
// Save the object to persistent store 
if (![context save:&error]) { 
    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); 
} 

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

을 그리고 내가 무엇을했는지

NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];에 오류가 발생합니다 잘못? 어쩌면 내가 DataModel을 수동으로 추가하면 어딘가에 연결해야합니까?

그리고 두 번째 질문은 이론적 :

내가 엑스 코드 개발에 대한 튜토리얼을 읽고 난 현재 CoreData에 대해 읽고 말한다 :

인용구 : "영구 저장소에서 장치 정보를 가져 오기를 (즉, SQLite 데이터베이스) 테이블 뷰 컨트롤러에 데이터를 채 웁니다. "

코어 데이터가 SQLite 데이터베이스라는 것을 의미합니까?

ERROR :

알 수없는 유형 이름 NSManagedObject; NSManagedObjectModel을 의미 했습니까? ...

여전히

@synthesize managedObjectContext = _managedObjectContext; 
@synthesize managedObjectModel = _managedObjectModel; 
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; 

오류에 AppDelegate.h

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

에 추가 된이

추가 CoreData.framework

추가 된이 :

내 코드를 편집 여기

답변

0

당신이 내 대답은 여전히 ​​유용 여부를 모르는 당신의 AppDelegate.m

- (void)saveContext 
{ 
    NSError *error = nil; 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    if (managedObjectContext != nil) 
    { 
    if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) 
    { 
     //TODO Proper error handling 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
    } 
} 

#pragma mark - Core Data stack 

/** 
Returns the managed object context for the application. 
If the context doesn't already exist, it is created and bound to the persistent store  coordinator for the application. 
*/ 
- (NSManagedObjectContext *)managedObjectContext 
{ 
    if (__managedObjectContext != nil) 
    { 
    return __managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) 
    { 
    __managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [__managedObjectContext setPersistentStoreCoordinator:coordinator]; 
    } 
    return __managedObjectContext; 
} 

/** 
Returns the managed object model for the application. 
If the model doesn't already exist, it is created from the application's model. 
*/ 
- (NSManagedObjectModel *)managedObjectModel 
{ 
    if (__managedObjectModel != nil) 
    { 
    return __managedObjectModel; 
    } 
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyAppTesting" withExtension:@"momd"]; 
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];  
    return __managedObjectModel; 
} 

/** 
Returns the persistent store coordinator for the application. 
If the coordinator doesn't already exist, it is created and the application's store added to it. 
*/ 
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (__persistentStoreCoordinator != nil) 
    { 
    return __persistentStoreCoordinator; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyAppTesting.sqlite"]; 

    NSError *error = nil; 
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) 
    { 
    //TODO Error handling 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
    }  

    return __persistentStoreCoordinator; 
} 
2

에 추가해야하는 코드입니다하지만 당신은 또한 CoreData.framework를 가져 오지 않았기 때문에이 오류가 표시 클래스에서 사용하려는 CoreData를 가져 오십시오.

"CoreData/CoreData.h"가져 오기 (.h)

관련 문제