Сохранить и загрузить данные - CoreData - PullRequest
4 голосов
/ 14 ноября 2010

Я очень новичок в CoreData, и в своем приложении для iPhone я хочу знать, как сохранить какой-то текст, а затем загрузить его обратно. Но хитрость заключается в том, чтобы загрузить его обратно, когда дата в UIDatePicker совпадает с датой, когдаЯ сохранил его, как календарь.

Надеюсь, вы можете помочь в любом случае.Очень важно, чтобы я научился делать это довольно скоро, поэтому любая помощь очень ценится, спасибо.

ОБНОВЛЕНИЕ: Спасибо за ответы, особенно за пример кода.Однако у меня есть некоторые проблемы, чтобы понять, как это сочетается, простите меня.Я хочу узнать, как это работает, но, в то же время, заставить его работать. Это действительно полезно.

Я понимаю некоторые из этих ошибок, только их исправление - это моя проблема.Надеюсь, что вы можете помочь.

Предположительно, я поместил ваш первый кусок кода в метод редактирования "Закончил" (сохранить при выходе из текстового поля), а затем второй блок в методе изменения даты (загрузить при изменении даты)?

В этом коде используются имена сущностей и свойств?Как именно мне нужно настроить файл xcdatamodel?Нужно ли мне использовать этот код или это просто демонстрирует, какие сущности и свойства мне нужны?

DatedText{
    savedText:String
    dateSaved:Date
}

В этой строке написано, что 'mo' не объявлено: (ИСПРАВЛЕНО)

    newDatedText=mo=[NSEntityDescription insertNewObjectForEntityForName:@"DateText"
inManagedObjectContext:theManagedObjectContext];

Предположительнониже 'someText' текст, который я хочу сохранить?А 'aDateObject' - это дата в моем UIDatePicker?

[newDatedText setValue:someText forKey:@"savedText"];
    [newDatedText setValue:aDateObject forKey:@"dateSaved"];

Запрос на член 'moc' во что-то, не являющееся структурой или объединением:

NSEntityDescription *testEntity=[NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.moc];

Что такое 'targetDate' (undeclared)?Дата UIDatePicker снова?

NSPredicate *pred=[NSPredicate predicateWithFormat:@"dateSaved==%@", targetDate];

Запрос на член 'moc' во что-то, что не является структурой или объединением:

NSArray *fetchedObjs=[self.moc executeFetchRequest:theFetch error:&fetchError];

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Для начала вам нужна модель данных, отражающая то, что вы хотите сохранить, в данном случае некоторый текст и дату.Итак:

DatedText{
    savedText:String
    dateSaved:Date
}

Чтобы создать новый объект DatedText (без пользовательского класса), выполните:

NSManagedObject *newDatedText;
newDatedText=[NSEntityDescription insertNewObjectForEntityForName:@"DateText" inManagedObjectContext:theManagedObjectContext];
[newDatedText setValue:someText forKey:@"savedText"];
[newDatedText setValue:aDateObject forKey:@"dateSaved"];

NSError *saveError=nil;
[theManagedObjectContext save:&saveError];
if (saveError!=nil) {
    NSLog(@"[%@ saveContext] Error saving context: Error=%@,details=%@",[self class], saveError,saveError.userInfo);
}

Чтобы получить объект DatedText с определенной датой, вы создаетеполучить так:

NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
NSEntityDescription *testEntity=[NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.moc];
[fetch setEntity:testEntity]; 
NSPredicate *pred=[NSPredicate predicateWithFormat:@"dateSaved==%@", targetDate];
[fetch setPredicate:[NSArray arrayWithObject:pred]];

NSError *fetchError=nil;
NSArray *fetchedObjs=[theManagedObjectContext executeFetchRequest:theFetch error:&fetchError];
if (fetchError!=nil) {
    NSLog(@" fetchError=%@,details=%@",fetchError,fetchError.userInfo);
    return nil;
}

fetchedObjs теперь будет содержать массив всех DatedText объектов с тем же savedDate, что и targetDate.

2 голосов
/ 14 ноября 2010

Есть много ресурсов о Core Data, вы можете перейти по следующим ссылкам, чтобы узнать их. http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html Руководство по основным данным для iOS: это действительно отличный, официальный документ, легкий для изучения, с загружаемым источником. Есть ли хорошее руководство по iPhone Core Data? Кто-то задавал тот же вопрос раньше, можете посмотреть.

...