2011-02-09 49 views
1

我在一個簡單的「基於點」的應用程序工作。UISlider核心數據編程

在設置下,用戶設置使用滑塊獲取「goodie」所需的點數。

-(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我發現我的錯誤。我從來沒有把我的TOD對象在我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]; 

你的代碼的工作就像一個魅力.....

感謝 斯科夫

回答

0

這裏的關鍵是核心數據存儲數字屬性(例如整數,浮點數等)作爲NSNumber對象。

說你的實體叫做Record,它有一個叫做'progress'的整數屬性。

如果你創建了一個名爲「記錄」,那麼你可以這樣設置它的進程記錄的管理對象實例:

[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's回到1,如果我添加 - (空)保存{ \t INT progressAsInt =( int)(pointSlider.value +0.5); \t toDo.goodiesPoints = [NSNumber numberWithInteger:progressAsInt]; – Skovie 2011-02-09 21:53:12