将 CoreData 对象的字符串属性加载到 UIPickerView

Posted

技术标签:

【中文标题】将 CoreData 对象的字符串属性加载到 UIPickerView【英文标题】:Load CoreData objects' string property into UIPickerView 【发布时间】:2010-03-16 04:36:03 【问题描述】:

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

在 -(void)viewDidLoad 中,我试图获取所有“事件”对象并按字母顺序将它们的“事件名称”加载到 UIPickerView 中。

最终目标是通过使用 textField、按钮和 pickerView 来添加新对象并删除不需要的对象。基本上把 UIPickerView 变成了 UITableView。目前我可以将对象保存到 CoreData 存储中,但无法将它们/它们的属性拉出到 UIPickerView 中。

我愿意并且能够将项目源代码分享给任何需要它的人,或者愿意查看它以提供帮助。

谢谢 克里斯

【问题讨论】:

那么问题是什么? 我在下面找到了一些我的答案,我也发布了代码。但我目前的问题是,是否有可能/如何从 UIPickerView 中选择的其中一个 CoreData 对象中删除? 【参考方案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;

【讨论】:

以上是关于将 CoreData 对象的字符串属性加载到 UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章

删除coredata中的对象后根据通知重新加载tableview显示奇怪的结果

如何使用先前保存的 coreData 加载 TextEditor

将 CoreData 数据块移动到单独的对象中

NSManagedObject;保留或加载到自定义 NSObject 中?

加载 Angular UI Bootstrap Datepicker 时将日期字符串解析为 Date 对象

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)