UISlider核心数据编程

时间:2011-02-09 15:53:51

标签: cocoa-touch core-data

我正在开发一个简单的“基于点”的应用程序。

在设置下,用户设置使用滑块获得“礼物”所需的点数。

-(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中设置我的toD-object,其中包含:

       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

1 个答案:

答案 0 :(得分:0)

这里的关键是Core Data将数字属性(例如整数,浮点数等)存储为NSNumber对象。

假设您的实体名为Record,它有一个名为'progress'的整数属性。

如果您创建一个名为“record”的Record的托管对象实例,那么您可以像这样设置其进度:

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

当您想使用模型中的值更新视图时(通常在viewWillAppear:中),您可以获得如下进度:

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

或者,如果您为Record实体生成类文件,则可以执行以下操作:

record.progress = [NSNumber numberWithInteger:progressAsInt];

slider.value = [record.progress floatValue];