2016-03-27 8 views
0

スタッフリストと指示のリストを持つアプリケーションがあります。そして、あなたがTextFieldで注文を作成するとき、PickerViewは従業員のリスト(名前付き)と共に現れなければなりません。PickerViewのコアデータからデータを取得する方法は? iOS

- (void)viewDidLoad { 
    NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Employees"]; 
     self.empl=[[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 
     UIPickerView *picker = [[UIPickerView alloc]init]; 
     picker.dataSource = self; 
     picker.delegate = self; 
     [picker setShowsSelectionIndicator:YES]; 
     [self.empTaskField setInputView:picker]; 
} 



#pragma mark - UIPickerView DataSource Method 
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ 

    return 1; 

} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ 

     return self->_empl.count; 

    } 

    #pragma mark - UIPickerView Delegate Method 

    -(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 
     return [_empl objectAtIndex:row]; 
    } 

あなたはエラーは、TextFieldに表示されますクリックすると::

27/03/2016 23 : 32 : 57.177 Employee Task [ 2730 : 150090 ] - [Employees copyWithZone:]: unrecognized selector sent to instance 0x7fcf2ac84fd0 2016-03-27 23 : 32 : 57.513 Employee Task [ 2730 : 150090 ] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [Employees copyWithZone:]: unrecognized selector sent to instance 0x7fcf2ac84fd0'

どのようにこの問題を解決するために、次のように私はそれを実装するのだろうか?

+0

あなたの問題は、この行は次のとおりです。 'self.empl = [[managedObjectContext executeFetchRequest:fetchRequestエラー:nilを] mutableCopy];' 'Employees'は' NSCopying'プロトコルを実装していません。 – Larme

答えて

0

コードの下にit..likeを返す必要がありますので、文字列として返すようにする必要があります。 NSManagedObjectはNSCopyingプロトコルに適合しません。だからあなたのフェッチコードがあるべき

self.empl=[managedObjectContext executeFetchRequest:fetchRequest error:nil]; 
+0

ВнастоящеевремявспискевместоnameEmployeeнаписано「NUL」を解決していないなど のために '[[_empl objectAtIndexを返します。行] valueForkey:@ "empName"]; ' –

+0

で(今PeckerViewでリストが空である – shinoys222

0

=>あなたは、キーの粒子状のインデックス行をフェッチし、mutableCopyを削除

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ NSArray 
    Teacher *teacher = teacherForSubjectArray[row]; 
    NSString *teacherName = [NSString stringWithFormat:@"%@ %@ %@", teacher.firstName, teacher.middleName, teacher.lastName]; 
    return teacherName; 
} 
+0

これはなんですか? "teacherForSubjectArray [row]" –

+0

あなたのケースとして渡す必要があります: [_empl objectAtIndex:row]; – Akash

+0

それは私の問題あなたがタイトルとしてNSStringのを渡す必要がありPickerView –

関連する問題