CoreData未将属性保存为字符串

时间:2017-06-03 08:09:51

标签: ios objective-c core-data

以下是我的保存方法

-(void)createData
{
    //    // get date and time and store in two separate variables
    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy"];
    NSString *dateString = [dateFormat stringFromDate:today];
    NSLog(@"Date is: %@",dateString);
    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
    timeFormatter.dateFormat = @"HH:mm";
    NSString *timeString = [timeFormatter stringFromDate:today];
    NSLog(@"Time is: %@",timeString);
    //
    //

    ReminderInfo *reminderInfo = [NSEntityDescription insertNewObjectForEntityForName:@"ReminderInfo" inManagedObjectContext:[DataManager sharedDataManager].managedObjectContext];

    reminderInfo.date = today;
    reminderInfo.reminderTime = @"06:30";
    reminderInfo.medicationType = @"Cream";
    [[DataManager sharedDataManager] saveReminderInfo:reminderInfo];
    NSLog(@"reminder created");

}

以下是控制台的输出:

<ReminderInfo: 0x6080002887a0> (entity: ReminderInfo; id: 0xd000000000480002 <x-coredata://8055FB8D-6E6A-44B2-9456-3E6932ACBE32/ReminderInfo/p18> ; data: {
    date = "2017-06-03 08:03:40 +0000";
    medicationType = Cream;
    reminderTime = "06:30";
})

medicationType是String类型的属性。正如您在控制台中看到的那样,""中没有Cream。这可能是我没有保存任何东西到coredata的原因吗?

2 个答案:

答案 0 :(得分:0)

尝试并宣布&#34;奶油&#34;首先是一个字符串。

NSString *medType = @"Cream"; 然后在save方法中使用medType。

答案 1 :(得分:0)

缺少引号与数据类型无关。将Core Data对象打印到Xcode控制台时,如果字符串中没有空格,则不使用引号。您所看到的正是您所使用的字符串所期望的内容。如果您将字符串更改为@"Cream cheese",您将看到引号,但数据类型将相同。如果它不是一个字符串,Core Core Data将无法将值 - 一个数字类型 - 转换为Cream