我已经定制了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或者带开关,但我知道必须有更优雅的方式。
答案 0 :(得分:0)
正如卡尔所说,这是一种不优雅的方法。我改为切换,现在将所有标签保存在一个名为“tags”的CoreData属性中。要添加和减去它们,我只需添加到字符串或找到替换为@“”,以删除它们。然后我可以在以后搜索它们。
为了管理很长的标签列表,并轻松添加它们,我使用了一个PickerView,它使用NSMutableArray设置,我存储在NSUserDefaults中。 (重新加载时必须制作一个可变副本。)
是的,你可以在CoreData中保留标签列表,但这对我来说似乎更容易。