我有一个简单的提醒应用程序,使用核心数据,有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;
}
我是否需要将值转换为字符串才能生效?另外,我是否需要为日期创建单独的提取请求?
答案 0 :(得分:0)
在您的第一个代码段中,您的entry.date
属性似乎是核心数据“日期”属性,相当于代码中的NSDate
。您正在尝试为其分配UIDatePicker
。这是不正确的,因为UIDatePicker
是一个允许用户选择日期的UI控件,它本身不是日期。您需要向日期选择器询问其当前日期值 - 可能是代码中的self.datePicker.date
。
在第二个代码段中,您似乎正在为entry.date
文本属性分配UILabel
。这也是不兼容的,因为日期不是字符串。一个简单的解决方法是使用entry.date.description
,但这将使用GMT而不是本地时间。要更好地控制将日期转换为字符串,请查看NSDateFormatter
。
答案 1 :(得分:0)
您可以将属性值设置为转换日期,然后将日期选择器日期保存为init。我们必须将日期选择器日期作为NS日期而不是核心日期中的字符串。希望它可以帮助您。