【发布时间】:2014-12-28 01:17:55
【问题描述】:
我有 2 个实体 - “Teacher”和“Subjects”,以及 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 是一个包含 Core Data 对象的数组
- (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;
}
但是teacherOfSubject有一个问题,我得到的不是当前值,而是一个路径,或者NSmanagedObject而不是我需要的值,比如
0x7a6806d0 x-coredata://6DB0CDAF-5C8C-4128-BB43-D0EC10EA41D6/Teacher/p2。
我知道答案应该很简单,但我厌倦了自己尝试解决它。
【问题讨论】:
-
如果我的问题不够清楚,请说出来。
标签: ios objective-c core-data entity-relationship