将参数传递给方法,以访问Core Data属性

时间:2013-01-19 23:21:23

标签: ios core-data methods parameters arguments

我已经定制了CoreDataBooks示例应用程序并添加了一大堆Bools。基本上,我把它变成了一个餐馆应用程序,所以我希望Bool的价值观有“晚餐”,“海鲜”,“鸡尾酒”,“儿童友好”等等。

在我的Detailview控制器中,我选择了一个项目(书),可以改变CoreData中的Bool值 - 对于一个名为seafood的属性,像这样 -

     self.book.seafood = NO;

     self.book.seafood = YES;

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

但是,因为可能有60或80个Bool,并且我想稍后添加更多,我想编写一个函数,我可以使用它来使用标记或传递参数的所有函数。我想写这样的东西,但我觉得我错过了一步。它显然不会让我将参数传递给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或者带开关,但我知道必须有更优雅的方式。

1 个答案:

答案 0 :(得分:0)

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

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

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