如何使用核心数据在详细文本标签中保存和显示日期选择器值?

时间:2016-06-29 14:23:19

标签: ios objective-c date core-data datepicker

我有一个简单的提醒应用程序,使用核心数据,有2个实体,一个用于'详细信息'提醒和一个日期'提醒。用户添加提醒并选择日期,然后将其存储在所有提醒的表格视图中。

我有'详细信息'实体值正确地从文本字段保存到表视图的标签中,但我似乎无法将日期从日期选择器保存到表视图的详细文本标签中。

在EnterReminderViewController.m中:

-(void)insertReminderDetails {

CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
ReminderEntry *entry = [NSEntityDescription insertNewObjectForEntityForName:@"ReminderEntry" inManagedObjectContext:coreDataStack.managedObjectContext];

entry.details = self.reminderTextField.text;
entry.date =  self.datePicker;


[coreDataStack saveContext];

}

在UpcomingRemindersTableViewController.m中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView    dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

ReminderEntry *entry = [self.fetchedResultsController objectAtIndexPath:indexPath];

cell.textLabel.text = entry.details;

 cell.detailTextLabel.text = entry.date;

return cell;

}

我是否需要将值转换为字符串才能生效?另外,我是否需要为日期创建单独的提取请求?

2 个答案:

答案 0 :(得分:0)

在您的第一个代码段中,您的entry.date属性似乎是核心数据“日期”属性,相当于代码中的NSDate。您正在尝试为其分配UIDatePicker。这是不正确的,因为UIDatePicker是一个允许用户选择日期的UI控件,它本身不是日期。您需要向日期选择器询问其当前日期值 - 可能是代码中的self.datePicker.date

在第二个代码段中,您似乎正在为entry.date文本属性分配UILabel。这也是不兼容的,因为日期不是字符串。一个简单的解决方法是使用entry.date.description,但这将使用GMT而不是本地时间。要更好地控制将日期转换为字符串,请查看NSDateFormatter

答案 1 :(得分:0)

您可以将属性值设置为转换日期,然后将日期选择器日期保存为init。我们必须将日期选择器日期作为NS日期而不是核心日期中的字符串。希望它可以帮助您。