如何获得UISwitch的价值?

Eri*_*kos 22 cocoa-touch core-data uiswitch ios

我是一个新手iOS程序员,我有一个问题.

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

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

[newContact setValue:howMany.text forKey:@"quantity"]; 
[newContact setValue:important.??? forKey:@"important"]; 
Run Code Online (Sandbox Code Playgroud)

howmany是一个文本域,重要的是UISwitch

Joe*_*ets 22

保存它

[newContact setObject:[NSNumber numberWithBool:important.on] forKey:@"important"]; 
Run Code Online (Sandbox Code Playgroud)

要检索它

BOOL on = [[newContact objectForKey:@"important"] boolValue];
Run Code Online (Sandbox Code Playgroud)


Pau*_*l.s 17

你看过文档了UISwitch吗?一般来说,你应该在搜索信息时将文档作为你的第一个调用点,然后转向谷歌,然后如果你真的找不到你想要的东西就堆叠溢出.

你想要的@property(nonatomic, getter=isOn) BOOL on财产像:

important.isOn
Run Code Online (Sandbox Code Playgroud)

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

[NSNumber numberWithBool:important.isOn]
Run Code Online (Sandbox Code Playgroud)

  • @NickLockwood我刚试过`NSLog(@"%d%d%d",thing.isOn,[thing isOn],thing.on);`而且都是等价的. (6认同)
  • 那应该是重要的.或者[重要的是).important.isOn不起作用. (3认同)
  • @ Paul.s是正确的,但`isOn`仅在您实际使用它作为方法时使用.如果您使用点语法,则使用属性的名称:`on`. (3认同)

Nic*_*ood 5

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

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

NSNumber *value = [NSNumber numberWithBool:important.on];
[newContact setValue:value forKey:@"important"];
Run Code Online (Sandbox Code Playgroud)