0

我已经自定义了 CoreDataBooks 示例应用程序,并且正在添加一整套布尔值。本质上,我正在把它变成一个餐厅应用程序,所以我想为“晚餐”“海鲜”“鸡尾酒”“儿童友好”等内容设置布尔值。

在我的 Detailview 控制器中,我选择了一个项目(书),并且可以更改 CoreData 中的 Bool 值——对于一个名为海鲜的属性,如下所示——

     self.book.seafood = NO;

或者

     self.book.seafood = YES;

这些值每个都使用自己的按钮进行切换(实际上看起来像我的应用程序中的复选框)

但是,因为可能有 60 或 80 个布尔值,并且我想稍后添加更多,所以我想编写一个函数,我可以将其用于所有使用标签或传递参数的布尔值。我想写这样的东西,但我觉得我错过了一步。它显然不会让我将参数传递给 self.book.button:

      -(IBAction) switchValue:(*UIButton)button{

      tmpBool = self.book.button

     if (tempBool == YES) {
            self.book.button = NO;

            UIImage *buttonImage = [UIImage imageNamed:@"checkOff.png"];
            [self.button setImage:buttonImage forState:UIControlStateNormal];

            NSLog(@"nwSwitched to NO");
        }
        else{

            self.book.button = YES;

            UIImage *buttonImage = [UIImage imageNamed:@"checkOn.png"];
            [self.button setImage:buttonImage forState:UIControlStateNormal];

            NSLog(@"nwSwitched to YES");
        }

就目前而言,我可以让它工作的唯一方法是使用大量的 if/thens 或 switch,但我知道必须有一种更优雅的方式。

4

1 回答 1

0

正如卡尔所说,这是一种不雅的方法。我改为切换,现在将所有标签保存在一个名为“标签”的 CoreData 属性中。要添加和减去它们,我只需添加到字符串或找到替换为 @" ",以删除它们。然后我可以稍后搜索它们。

为了管理一长串标签并轻松添加标签,我使用了 PickerView,它是使用 NSMutableArray 设置的,我存储在 NSUserDefaults 中。(当你重新加载它时,你必须制作一个可变副本。)

是的,您可以在 CoreData 中保留标签列表,但这对我来说似乎更容易。

于 2013-01-21T17:20:11.650 回答