NSNumber到BOOL

时间:2014-06-01 00:44:16

标签: ios objective-c cocoa-touch parse-platform

我正在使用Parse.com作为后端服务器,并正在上传数据。我有一个名叫PFObject的人,其中有一个名为“电子邮件”的列。 Boolean类型。我有一个名为Core Data的BOOL属性email对象,由[NSNumber numberWithBool:[self.email isOn]];设置。当我尝试按如下方式设置PFObject时:

Person[@"email"] = [person.email boolValue];

它给我一个错误,说我正在为id分配一个bool(Person是PFObject)。我做错了吗?

2 个答案:

答案 0 :(得分:3)

PFObject的电子邮件属性的类型是什么?

您可以向它发送boolValue消息这一事实让我觉得它可能是一个NSNumber。 (无论是那个还是NSString)

如果它已经是NSNumber,您不必做任何事情。只需将person.email直接分配给目标键/值对:

aPerson[@"email"] = person.email;

如果person.email是一个字符串,那么您可以使用:

aPerson[@"email"] = @([person.email boolValue]);

将person.email转换为bool,然后使用该bool创建一个NSNumber。

顺便说一句,您不应该以大写字母开头的变量,属性或方法命名。 Objective-C有一个强烈的约定,即只有类名应以大写字母开头。

我还畏惧有2个不同的变量,这些变量只根据案例(“人”和“人”)而不同。这是一个远离未来错误的输入错误。

答案 1 :(得分:2)

根据iOS文档, boolValue 返回一个原始BOOL。 id不是原始的,只能分配 NSNumber 等对象。

使用Parse时,我通常会将NSNumbers发送到服务器,因为您无法发送BOOL。试着写一下。

Person[@"email"] = [NSNumber numberWithBool:self.email];

这会将NSNumber值发送到服务器,当您需要以BOOL形式检索它时,只需使用NSNumber的 boolValue