2014-10-31 60 views
0

我有兩個實體 - 「教師」和「主題」,以及2個控制器,AddSubject和Subject manager。實體「主體」與「教師」有關係。在我AddSubjectController我增加了主題從UIPickerView選擇老師通過核心數據中的關係獲得價值

Subjects *subject = [NSEntityDescription insertNewObjectForEntityForName:@"Subjects" inManagedObjectContext:self.managedObjectContext]; 
int selectedRow = [teacherPickerView selectedRowInComponent:0]; 


subject.name = nameOfSubjectTextField.text; 
subject.article = notesTextView.text; 
subject.teacher = [teacherForSubjectArray objectAtIndex:selectedRow]; 

teacherForSubjectArray是從核心數據

- (NSArray *)takeTeacherForSubject { 

    managedObjectContext = [AppDelegate sharedDelegate].managedObjectContext; 

    NSFetchRequest *request = [[NSFetchRequest alloc]init]; 

    NSEntityDescription *description = [NSEntityDescription entityForName:@"Teacher" inManagedObjectContext: 
             managedObjectContext]; 
    [request setEntity:description]; 

    NSError *requestError = nil; 

    teacherForSubjectArray = [[self.managedObjectContext executeFetchRequest:request error:&requestError] mutableCopy]; 

    if (requestError) { 
     NSLog(@"%@" , [requestError localizedDescription]); 
    } 
    return teacherForSubjectArray; 

} 

然後在我的SubjectManager我試圖表現出UITable這個數據與對象的數組。認爲,從核心數據服用之前

- (NSArray *)takeSubjectFromCoreData { 

    managedObjectContext = [AppDelegate sharedDelegate].managedObjectContext; 
    NSFetchRequest *request = [[NSFetchRequest alloc]init]; 

    NSEntityDescription *description = [NSEntityDescription entityForName:@"Subjects" inManagedObjectContext: 
              managedObjectContext]; 
    [request setEntity:description]; 

    NSError *requestError = nil; 
    subjectsResultArray = [[self.managedObjectContext executeFetchRequest:request error:&requestError] mutableCopy]; 

    if (requestError) { 
     NSLog(@"%@" , [requestError localizedDescription]); 
    } 

    NSLog(@"%@", subjectsResultArray); 

    return subjectsResultArray; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    Subjects *objectSubject = [subjectsResultArray objectAtIndex:(long)indexPath.row]; 
    UITableViewCell *cell = [subjectsTableView dequeueReusableCellWithIdentifier:@"subjectCell" forIndexPath:indexPath]; 
    NSString *subjectName = [NSString stringWithFormat:@"%@", [objectSubject valueForKey:@"name"]]; 
    NSString *teacherOfSubject = [NSString stringWithFormat:@"%@", objectSubject.teacher]; 
    cell.textLabel.text = subjectName; 
    cell.detailTextLabel.text = teacherOfSubject; 

    return cell; 
} 

但與一個老師允許問題rOfSubject,我得到不是當前值,而是一個路徑,或NSmanagedObject而不是價值,我需要,像

0x7a6806d0 X-coredata:// 6DB0CDAF-5C8C-4128-BB43-D0EC10EA41D6 /教師/ P2。

我知道答案應該很簡單,但我厭倦了試圖自己解決它。

+0

如果我的問題不夠清楚,請說出來。 – SpencerReid 2014-10-31 16:48:25

回答

0

這條線:

NSString *teacherOfSubject = [NSString stringWithFormat:@"%@", objectSubject.teacher]; 

是給你的學科教師關係的字符串表示 - 即對對象的引用,而不是一個特定的屬性。你大概想要的是引用教師的某些屬性,例如名稱。假設你已經創建了子類的兩個實體,你可以使用:

NSString *teacherOfSubject = [NSString stringWithFormat:@"%@", objectSubject.teacher.name]; 

如果沒有,使用:

NSManagedObject *teacher = [objectSubject valueForKey:@"teacher"]; 
NSString *teacherOfSubject = [NSString stringWithFormat:@"%@", [teacher valueForKey:@"name"]; 

顯然修改name匹配你想使用的任何財產。

+0

瞭解。獲取我需要的名字做objectSubject.teacher.firstName(這是教師實體的屬性)。謝謝。 – SpencerReid 2014-10-31 17:39:16

+0

是的,確切如此。 – pbasdf 2014-10-31 17:41:21