不兼容的整数到指针转换“int”到参数类型“id”

时间:2014-02-02 08:15:33

标签: ios objective-c xcode

 - (void) changeState
  {

    if ([_buttonChangeState.title isEqual: @"Active"])
    {
        PFUser *user = [PFUser currentUser];
        user[@"active"] = FALSE;
        user[@"party"] = @"";
        [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
        {
            if (error)
            {
                _statusFailed = [[UIAlertView alloc]initWithTitle:@"" message:@"Status Change       Error, Try Again" delegate:self cancelButtonTitle:@"Retry" otherButtonTitles:@"Close", nil];
                _statusFailed.cancelButtonIndex = 0;
                [self.view addSubview:_statusFailed];
            }
            else
            {
                [_buttonChangeState setTitle:@"Taking A Break"];
            }
        }];
    }
    if ([_buttonChangeState.title isEqual:@"Taking A Break"])
    {
       PFUser *user = [PFUser currentUser];
       user[@"active"] = TRUE;
       [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
        {
           if(error)
            {
                [self.view addSubview:_statusFailed];
            }
        }];
    }
}

我试图将Parse用户对象的“active”键字段分配为bool值,但由于某种原因,当尝试将用户[@“active”]设置为TRUE布尔值时,我收到错误“不兼容的整数指针转换“int”到参数类型“id”“。只有在将其设置为TRUE时才会发生这种情况,将其设置为FALSE会导致无错误。此外,将其设置为0很好,但1错误。我无法理解为什么我试图分配哪个布尔值。任何想法将不胜感激。感谢

1 个答案:

答案 0 :(得分:5)

您无法将BOOL添加到(实际字典)对象中。用户对象期望接收另一个对象,因此您的BOOL应该被包装到NSNumber实例中:

user[@"active"] = @YES; // NSNumber literal syntax

或者

user[@"active"] = [NSNumber numberWithBOOL:YES];

这适用于YES(true)和NO(false)两种情况。


此外,您不应该添加_statusFailed作为子视图。调用其show方法来显示警报视图。