ios - UIPickerView 未填充从 CoreData 获取的数据

标签 ios objective-c core-data uipickerview

所以这是我的问题。我正在尝试从 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/

相关文章:

ios - 3D Touch 快速操作启动黑屏。 UiNavigationController->UITableViewController-> UIViewController

objective-c - NSSegmentedControl -selectedSegment 始终返回 0

ios - 跟踪与 iCloud 同步带来的变化

core-data - 检查零核心数据属性导致 EXC_BAD_ACCESS

iphone - UILocalNotification - 如何发现用户操作是否来自通知中心?

ios - NSThread sleepfortimeinterval 阻塞主线程

ios - 如何在 UISplitView Master 和 Detail 之间进行通信而不导入彼此的 header

ios - SDWebImage 为一组图片清除带有标签的缓存

ios - UITextVield 中返回空值

iphone - 有适用于 MAC OS X 的免费 SQLite 管理器吗?