加载CoreData对象的字符串属性为UIPickerView(Load CoreData obje

2019-10-20 09:17发布

目前,我有一个实体命名一个CoreData的应用程序“事件”。 “事件”有一个名为“eventName的”一个字符串属性。

在 - (无效)viewDidLoad中我试图获取所有的“事件”对象并加载它们的“eventName的”按字母顺序排列为一个UIPickerView。

最终的最终目标是通过使用文本框,按钮和pickerView被加入新的对象和出删除不需要的对象。 基本上转动UIPickerView成一个UITableView。 目前我能够对象保存到CoreData店,但我不能拉他们/它们的属性伸到UIPickerView。

我愿意和能够分享项目的源代码,任何人谁想要它,还是愿意看它助阵。

感谢克里斯

Answer 1:

-(void)update
{   
    NSMutableArray *array2 = [[NSMutableArray alloc] init];

    CDPickerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *moc = [appDelegate managedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:moc];
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:entityDescription];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"callName" ascending:YES];
    [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
    [sortDescriptor release];

    NSArray *array = [moc executeFetchRequest:request error:&error];

    for (int i=0; i<array.count; i++) {     
        Event *theEvent = [array objectAtIndex:i];

        NSString *StringOne = [NSString stringWithFormat:@"%@",theEvent.callName];

        [array2 addObject:StringOne];

    }

    self.pickerData = array2;   
    [singlePicker reloadAllComponents];

}

-(IBAction)addCall{
    CDPickerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *context = [appDelegate managedObjectContext];   
    NSManagedObject *theEvent = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:context];

    [theEvent setValue:callField.text forKey:@"callName"];

    [context save:&error];

    callField.text=@"";

[callField resignFirstResponder];   
self.update;
}


文章来源: Load CoreData objects' string property into UIPickerView