我正在使用Parse.com
作为后端服务器,并正在上传数据。我有一个名叫PFObject
的人,其中有一个名为“电子邮件”的列。 Boolean
类型。我有一个名为Core Data
的BOOL属性email
对象,由[NSNumber numberWithBool:[self.email isOn]];
设置。当我尝试按如下方式设置PFObject
时:
Person[@"email"] = [person.email boolValue];
,
它给我一个错误,说我正在为id分配一个bool(Person是PFObject
)。我做错了吗?
答案 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