2011-02-09 3 views
1

Im работает над простым «основанным на точке» приложением.UISlider core data programing

В настройках пользователя задано количество точек, необходимых для получения «пользы» с помощью ползунка.

-(IBAction) sliderChanged: (id)sender { 

    UISlider *slider = (UISlider *) sender; 
    int progressAsInt =(int)(slider.value +0.5); 
    NSString *newText = [[NSString alloc] initWithFormat:@"%d",progressAsInt]; 
    sliderLabel.text = newText; 
    [newText release]; 

это работает отлично, но как так я сохранить значение ползунка в моей модели данных ядра, и как сделать мой слайдер показать сохраненное значение, когда вид нагрузки.

надеюсь, и может помочь мне :-D

Эй gerry3 я нашел мою ошибку. я никогда не ставил мой Тод-объект в моей settingsViewController с:

 NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:[NSEntityDescription 
        entityForName:@"ToDo" inManagedObjectContext:_context]]; 

NSError *error = nil; 
NSArray *array = [_context executeFetchRequest:request error:&error]; 
if (array == nil) 
{ 
    // Deal with error... 
} 

if(array.count > 0){ 
    toDo = [array objectAtIndex:0]; 
} else { // no one to fetch - generate one 
    toDo = [NSEntityDescription 
      insertNewObjectForEntityForName:@"ToDo" 
      inManagedObjectContext:_context]; 

[toDo retain]; 

ваш код работает как шарм .....

Благодарности Skov

ответ

0

Ключевым моментом здесь является то, что хранит базовые данные числовые атрибуты (например, целые числа, поплавки и т. д.) в качестве объектов NSNumber.

Скажите, что ваша сущность называется Запись и имеет целочисленный атрибут, называемый «прогресс».

При создании экземпляра управляемого объекта из записи под названием «запись», то вы можете установить свой прогресс, как это:

[record setValue:[NSNumber numberWithInteger:progressAsInt] forKey:@"progress"]; 

Если вы хотите обновить свою точку зрения со значением от модели (как правило, в viewWillAppear:), вы можете получить свой прогресс, как это:

NSNumber *progressNumber = [record valueForKey:@"progress"]; 
slider.value = [progressNumber floatValue]; 

в качестве альтернативы, если вы создаете файлы классов для объекта записи, вы можете просто сделать:

record.progress = [NSNumber numberWithInteger:progressAsInt]; 

и:

slider.value = [record.progress floatValue]; 
+0

Благодаря gerry3, но если я закрываю мое приложение и перезапускает приложение, ползунок обратно Go турниры 1, если я добавлю - (Недействительными) сохранить { \t INT progressAsInt = (int) (pointSlider.value +0.5); \t toDo.goodiesPoints = [NSNumber numberWithInteger: progressAsInt]; – Skovie

+0

Используете ли вы код примера Apple (или чужой) для настройки и сохранения стека Core Data? Вы создаете управляемый объект toDo, вставив его в контекст управляемого объекта? – gerry3

+0

toDo является свойством класса ToDo-объекта с атрибутом goodiesPoints. im используя один из шаблона, так что яблоки с _ после NSManagedObjectContext * managedObjectContext; – Skovie