0

Main.xcdatamodeld (coredata) の「テーブル」からタイプのリストを取得して、UIPickerView に配置したいと考えています。このエンティティ「Type」には、属性「name」(文字列) が 1 つだけあります。

NSMutableArray に文字列を入れると、完全に機能します。UIPickerView は文字列を表示します。上記は単純な NSMutableArray です。

resultFetch = [[NSMutableArray alloc]initWithObjects:@"Electronics",@"School",@"Kitchen",@"Office", nil];

しかし、コアデータからフェッチすると、エラーが発生します。以下にコードを示します。

AddItemViewController.m

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

nameField.text = [self.currentItem name];
locationField.text = [self.currentItem location];
//typeField.text = [self.currentItem type];
quantityField.text = [[self.currentItem quantity] stringValue];

self.nameField.delegate = self;
self.locationField.delegate = self;
//self.typeField.delegate = self;
self.quantityField.delegate = self;
NSLog(@"ViewDidload before put fetch in array");
//Put fetch in NSArray resultFetch

AppDelegate *myApp = (AppDelegate *) [[UIApplication sharedApplication]delegate];

resultFetch = [[NSMutableArray alloc] init];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Type" inManagedObjectContext:[myApp managedObjectContext]];
[fetchRequest setEntity:entity];

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

NSError *error;
NSArray *fetchedObjects = [[myApp managedObjectContext] executeFetchRequest:fetchRequest error:&error];

for (Type *t in fetchedObjects) {

    [resultFetch addObject:t];
    NSLog(@"resultFetch: %@", resultFetch);

}

//Define typePicker
typePicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0,43,320,480)];
typePicker.delegate = self;
typePicker.dataSource = self;
[typePicker setShowsSelectionIndicator:YES];
typeField.inputView = typePicker;

//Create done button in UIPickerView
myPickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)];
myPickerToolbar.barStyle = UIBarStyleBlackOpaque;
[myPickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneClicked)];
[barItems addObject:doneBtn];
[myPickerToolbar setItems:barItems animated:YES];
typeField.inputAccessoryView = myPickerToolbar;
 NSLog(@"End ViewDidLoad");

}

-(void)pickerDoneClicked
{
NSLog(@"Done Clicked");

[typeField resignFirstResponder];
myPickerToolbar.hidden=YES;
typePicker.hidden=YES;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [resultFetch count];
}

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

- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
typeField.text = [resultFetch objectAtIndex:row];
}

エラーは次のとおりです。

2013-11-14 10:31:53.099 Storage[1226:70b] フェッチを配列に入れる前に ViewDidload

2013-11-14 10:31:53.102 Storage[1226:70b] resultFetch: ( " (エンティティ: タイプ; id: 0x8a83e50 ; データ: )" )

2013-11-14 10:31:53.103 Storage[1226:70b] resultFetch: ( " (エンティティ: タイプ; id: 0x8a83e50 ; データ: )", " (エンティティ: タイプ; id: 0x8a6ae80 ; データ: )" )

2013-11-14 10:31:53.104 Storage[1226:70b] resultFetch: ( " (エンティティ: タイプ; id: 0x8a83e50 ; データ: )", " (エンティティ: タイプ; id: 0x8a6ae80 ; データ: )", " (エンティティ: タイプ; id: 0x8aa9650 ; データ: )" )

2013-11-14 10:31:53.107 ストレージ [1226:70b] 終了 ViewDidLoad

2013-11-14 10:31:57.148 ストレージ [1226:70b] -[タイプの長さ]: 認識されないセレクターがインスタンス 0x8aa08e0 に送信されました

データベース内にあるタイプ名は表示されません。この「テーブル」を適切にフェッチして、これらの属性文字列を UIPickerView 内に配置するのを手伝ってもらえますか? 私が欲しいのは、使用できるきれいな NSMutableArray だけです! :)

ご助力ありがとうございます。

ポーラ

4

1 に答える 1