【问题标题】:How to get the value of a UISwitch?如何获取 UISwitch 的值?
【发布时间】:2012-03-02 09:35:56
【问题描述】:

我是一名新手 iOS 程序员,但我遇到了问题。

我目前正在研究 iOS Core Data,我的问题是我想通过获取 UISwitch 的值将数据插入到数据库的布尔属性中。

问题是我不知道我必须调用什么方法(例如,.text 做同样的事情,但用于 UITextField)。我做了一个小的谷歌搜索,但没有结果。这是一些代码:

[newContact setValue:howMany.text forKey:@"quantity"]; 
[newContact setValue:important.??? forKey:@"important"]; 

howmany 是一个文本字段,重要的是 UISwitch

【问题讨论】:

    标签: ios cocoa-touch core-data uiswitch


    【解决方案1】:

    保存

    [newContact setObject:[NSNumber numberWithBool:important.on] forKey:@"important"]; 
    

    检索它

    BOOL on = [[newContact objectForKey:@"important"] boolValue];
    

    【讨论】:

      【解决方案2】:

      您查看过UISwitch 的文档吗?一般来说,您应该在搜索信息时将文档作为您的第一个调用点,然后转向谷歌,如果您真的找不到您想要的内容,则使用堆栈溢出。

      您想要@property(nonatomic, getter=isOn) BOOL on 属性,例如:

      important.isOn
      

      如果您没有将 Core Data 设置为使用原语,您可能必须将该布尔值包装在 NSNumber 中:

      [NSNumber numberWithBool:important.isOn]
      

      【讨论】:

      • 那应该是important.on或[important isOn]。 important.isOn 不起作用。
      • @NickLockwood 文档将属性声明为@property(nonatomic, getter=isOn) BOOL on
      • @Paul.s 对,但 isOn 仅在您实际将其用作方法时使用。如果您使用点语法,则使用属性名称:on
      • 是的,所以属性是“on”,getter 方法是“isOn”。要使用属性点语法访问它,请使用“on”。要使用方法语法访问它,请使用“isOn” - 尝试并回复我;-)
      • @NickLockwood 我刚刚尝试过NSLog(@"%d %d %d ", thing.isOn, [thing isOn], thing.on); 并且都是等效的。
      【解决方案3】:

      其他海报是正确的,您需要使用 isOn 方法来获取值,但是这会返回一个 BOOL 值,您不能直接将其传递给 setValue:forKey 因为该方法需要一个对象。

      要设置核心数据对象的值,首先将其包装在 NSNumber 中,如下所示:

      NSNumber *value = [NSNumber numberWithBool:important.on];
      [newContact setValue:value forKey:@"important"];
      

      【讨论】:

      • 将 NSNumber 数据放入布尔属性是否正确?我已根据您的回答更正了我的代码,但保存数据后错误仍然存​​在。
      • NSNumber 是将 BOOL 包装为对象的官方方法,因此它应该可以工作。你看到了什么错误?
      • 另一种选择是使用 @property(monatomic, assign) BOOL important 将重要属性声明为核心数据类上的 BOOL;然后使用“@dynamic important;”在 .m 文件中进行合成。然后,您可以使用 newContact.important = important.on; 直接将其设置为 BOOL;
      【解决方案4】:

      我用过

      [NSString stringWithFormat:@"%d",(self.allNotificationSwitch.isOn ? 0:1)];
      

      [NSString stringWithFormat:@"%@",(self.allNotificationSwitch.isOn ? @"Yes":@"No")];
      

      【讨论】:

        【解决方案5】:
        [newContact setBool:[NSNumber numberWithBool:important.on] forKey:@"important"];
        

        【讨论】:

          猜你喜欢
          • 2022-01-04
          • 1970-01-01
          • 2017-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多