2014-06-23 5 views
0

3 일 동안 혼자서 시도하고 많은 주제를 읽은 후 핵심 데이터에서 일대 다 관계를 구성하는 것이 불가능합니다. 암호 및 - 일대 다 관계 핵심 데이터

Users *dataUsers = [NSEntityDescription insertNewObjectForEntityForName:@"Users" inManagedObjectContext:_managedObjectContext]; 

    [dataUsers setUsername:usernameRegistration.text.capitalizedString]; 
    [dataUsers setPassword:passwordRegistration1.text]; 
    [dataUsers setEmailAddress:mail1.text]; 
    [dataUsers setRightOrLeft:[NSNumber numberWithInteger:rightOrLeftHanded.selectedSegmentIndex ]]; 



    NSError *error = nil; 
    if(![_managedObjectContext save:&error]) { 
     //handle the error 
    } 

지금 내가 인식 이름을 수행하기 위해 다른 뷰 컨트롤러에서 모든 정보를 호출 내 응용 프로그램에서

, 내가 엔티티의 모든 새로운 사용자 정보가이 코드에 의해 사용자라고 저장 다음 페이지에 대한 액세스.

AppDelegate *appDelegate = (AppDelegate*) [[UIApplication sharedApplication]delegate]; 
_managedObjectContext=[appDelegate managedObjectContext];  

NSFetchRequest *request = [[NSFetchRequest alloc]init]; 
NSEntityDescription *usersDescription= [NSEntityDescription entityForName:@"Users" inManagedObjectContext:_managedObjectContext]; 
[request setEntity:usersDescription]; 


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"username" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 



NSError *error = nil; 
NSMutableArray *mutableFetchresults = [[_managedObjectContext executeFetchRequest:request error:&error]mutableCopy]; 
if(mutableFetchresults == nil) { 
    //handle error 
} 
[self setUsersData:mutableFetchresults]; 
// different steps for the recognition 

좋아요. 각 사용자가 로그인하여 다음 페이지에 액세스 할 수 있습니다.

이제이 다음 페이지에서 사용자는 새 세션을 만들어야합니다. 그래서 Sessions라는 새로운 엔티티를 만들었습니다. 각 사용자는 여러 세션을 가질 수 있지만 각 세션은 단 한 명의 사용자와 연결됩니다.

Sessions *session = [NSEntityDescription insertNewObjectForEntityForName:@"Sessions" inManagedObjectContext:_managedObjectContext]; 
NSNumber *howManySwingsSessionSaved = [NSNumber numberWithInteger:howManySwingsSession]; 
[session setName:_sessionNameTextField.text]; 
[session setHowManySwings:howManySwingsSessionSaved]; 
[session setClub:choosenClub]; 
NSDate *dateSaved = [NSDate date]; 
[session setDate:dateSaved]; 


NSError *error = nil; 
if(![_managedObjectContext save:&error]) { 
    //handle the error 
} 

각 세션이 성공적으로 저장되었습니다. 내 질문은 : 어떻게 내 응용 프로그램에 연결된 현재 사용자로 만든 새 세션을 연결할 수 있습니까? 나는 현재 사용자를 얻고 그에게이 새로운 세션을 추가하려고합니다. 사실 내 코드는 각 사용자와 각 세션을 별도로 저장합니다.

모든 도움은 매우 감사하겠습니다. :)

감사합니다 !!

편집 : 나는 이미 xcdmodel 나는 현재 사용자를 얻을 수 그에게이 새로운 세션을 추가 할

+0

을 저장, 그것은 NSURLCredentialStorage API를 통해, 키 체인을 사용하여 이렇게 일반적으로 바람직합니다. – quellish

+0

그래,하지만 내 응용 프로그램은 단지 개념의 증거가되므로 중요하지 않습니다. 애플 스토어에 내 앱을 게시하지 않겠습니다. – manu

답변

0

을 !!!! 이 아마 더 나은 솔루션입니다 그러나 이것은 내가는 사용자가 새로운 세션

Sessions *session = [NSEntityDescription insertNewObjectForEntityForName:@"Sessions"  inManagedObjectContext:_managedObjectContext]; 
NSNumber *howManySwingsSessionSaved = [NSNumber numberWithInteger:howManySwingsSession]; 
[session setName:_sessionNameTextField.text]; 
[session setHowManySwings:howManySwingsSessionSaved]; 
[session setClub:choosenClub]; 
NSDate *dateSaved = [NSDate date]; 
[session setDate:dateSaved]; 

를 작성하는 .m에서 미래

다른 사람들을 위해 도움이 될 수있는 희망, 작동 // 내가 삽입

for (int i = 0; i< [usersData count]; i++) 
{ Users* users = (Users *) [usersData objectAtIndex:i]; 
if ([users.username isEqualToString: @"your_username"]) 
{ 
    Users * currentUser = [usersData objectAtIndex:i]; 
    [currentUser addSessionObject:session]; 
} 

} 

세션

의 새로운 세션이 // 내가 원하는 사용자 이름과 내 usersData의 각 사용자 이름을 비교, 나는 currentUser로 정의하고 마지막으로 나는 그것을 만든 세션을 추가합니다.

NSError *error = nil; 
if(![_managedObjectContext save:&error]) { 
    //handle the error 
} 

// i가 사용자 이름과 암호를 저장하는 모든

0

의 관계를 만들었습니다. 사실 내 코드는 각 사용자와 각 세션을 별도로 저장합니다.

모델은 표시하지 않았지만 엔티티에 관계를 추가해야합니다. Session 엔티티는 User과 일 대 일 관계가 필요하며 반비례 관계는 User에서 Session까지의 다 대 관계 여야합니다. 일단 당신이 모델에서 엔티티를 선택하고 편집기 -> NSManagedObject 서브 클래스 만들기 ... 명령을 사용하여 각 엔티티에 대한 하위 클래스를 생성하십시오. 결과 헤더 파일을 보면 객체 간 관계를 만드는 데 사용할 수있는 접근자를 찾을 수 있습니다. - 당신도 그들을 사용하지 않아도 예를 들어, 당신은 같은 것을 할 수있는 : 마침내 관리

Sessions *session = [NSEntityDescription insertNewObjectForEntityForName:@"Sessions" inManagedObjectContext:_managedObjectContext]; 
session.user = theCurrentUser; 
+0

좋아요. 위에서 설명한대로 원하는 관계를 설정하지 못하게하는 요인은 무엇입니까? – Caleb

+0

죄송합니다. 게시물 몇 분 전에 편집 했으므로 이미 session.h 및 .m과 같은 것을 사용자 용으로 만들었습니다. currentUser에 대한 알았지 만, 어떻게이 currentUser를 얻을 수 있습니까? 나는이 세션이 예를 들어 사용자 이름 @ "toto"를 가진 사용자와 어떻게 연결되어 있다고 말할 수 있습니까? – manu