0

我有一个 Web 服务,它为我需要的名为 driveThru 的字段返回一个 0 字符串,以确定某个位置是否有直通服务。

我取那个“0”并将其作为字符串存储在我的核心数据数据库中,因为它更容易存储字符串。

所以我现在想要一个视图控制器,它有一个名为 self.driveThru 的 BOOL 属性,根据用户是否点击了一个单元格,该属性设置为 true 或 false,为 db fetch 创建一个谓词。

NSPredicate *predicate = [NSPredicate
                                  predicateWithFormat:@"(driveThru == %@)",
                                  self.driveThru];

我是否需要将 self.driveThru (BOOL) 转换为数字或字符串?

4

1 回答 1

0

我认为您可以将该属性的类型替换为NSNumber. 这将是一个更清晰的方法。或者您可以创建自己的映射函数,将“0”或“1”字符串映射到布尔值,反之亦然。

如果您遵循第一个,当您从服务器检索字符串值时,只需将其包装成如下所示的数字。

BOOL boolVal = [yourServerString boolValue];
NSNumber* numberValue = [NSNumber numberWithBool:boolVal];

当你使用它时,只需抓住boolValue这样的东西。

BOOL boolValue = [numberValue boolValue];

您的谓词将如下所示。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"driveThru == %@",
                                  [NSNumber numberWithBool:[self driveThru]]];

显然,您也可以考虑对您的实体进行子类化并为此使用标量值。

于 2013-05-14T22:47:10.783 回答