所以这是我的问题。我正在尝试从 CoreData 获取值,我的数据表中有数据,因此我不明白为什么会发生这种情况。当我打开托管 UIPickerView 的 View 时,没有数据存在。
下面是我的代码。
ViewController header :
#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 只是空的。任何帮助将不胜感激!
最佳答案
获取后,您需要设置[myPicker setDataSource:self]
,然后从 UIPickerDataSource 协议(protocol)实现方法“[pickerView:numberOfRowsInComponent:]”
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [voucherTypes count];
}
关于ios - UIPickerView 未填充从 CoreData 获取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990213/