0
因此,這是我的問題。我試圖從CoreData獲取值,我的數據表中有數據,因此我不明白爲什麼會發生這種情況。當我打開託管UIPickerView的視圖時,不存在數據。UIPickerView未填充從CoreData獲取的數據
以下是我的代碼。
視圖控制器頭:
#import <UIKit/UIKit.h>
@interface EBPaymentViewController : UIViewController <UIPickerViewDelegate>
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, strong) NSMutableArray *voucherTypes;
@property (weak, nonatomic) IBOutlet UIPickerView *voucherTypePicker;
@end
下面,這裏是我的viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// load the data from the database and populate the UIPickerView.
EBAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
_managedObjectContext = [appDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *vouchers
= [NSEntityDescription entityForName:@"VoucherTypes" inManagedObjectContext:_managedObjectContext];
[request setEntity:vouchers];
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"voucherType" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:descriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if(mutableFetchResults == nil)
{
// handle error
}
[self setVoucherTypes:mutableFetchResults];
}
最後我titleForRow:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [voucherTypes objectAtIndex:row];
}
的UIPickerView就是空的。任何幫助,將不勝感激!
感謝您的幫助羅布,似乎工作。還有一個問題,如何設置UIPickerView來顯示數組中對象的voucherType屬性。 – user3498133
很好用。要設置項目標籤,您的UIPickerViewDelegate可以實現pickerView:titleForRow:forComponent:並返回每行所需的任何屬性。在這種情況下,只需返回'voucherType [row]',我想;但你已經這樣做了嗎?你有沒有添加'[myPicker setDelegate:self]'?該代碼是否被執行?你在看什麼? – RobP
'NSInvalidArgumentException'失敗,原因:' - [NSManagedObject copyWithZone:]:無法識別的選擇器發送到實例0x8ccbab0' – user3498133