2012-02-09 65 views
21

我是一個新手iOS程序員,我有一個問題。如何獲得UISwitch的價值?

我目前在iOS核心數據上工作,我的問題是我想通過採用UISwitch的值將數據插入到數據庫的布爾屬性中。

的問題是,我不知道這是什麼我要調用的方法(例如的.text做同樣的事情,但對於的UITextField)。我做了一個小的谷歌搜索,但沒有結果。下面是一些代碼:

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

的howmany是一個文本框,重要的是UISwitch

回答

17

你有看了看文檔的UISwitch?一般來說,當搜索信息時,你應該讓文檔成爲你的第一個調用點,然後轉向谷歌,然後再堆棧溢出,如果你真的找不到你想要的。

你想要@property(nonatomic, getter=isOn) BOOL on屬性,如:

important.isOn 

如果你還沒有拿到核心數據集使用基元則可能需要換行布爾在NSNumber

[NSNumber numberWithBool:important.isOn] 
+3

這應該是重要的還是[重要的是]。 important.isOn將無法工作。 – 2012-02-09 21:25:43

+0

@NickLockwood doc的聲明屬性爲'@property(nonatomic,getter = isOn)BOOL on' – 2012-02-09 21:27:02

+3

@ Paul.s right,但是'isOn'只有在你真正使用它作爲方法時纔會使用。如果您使用點語法,則使用屬性的名稱:'on'。 – 2012-02-09 21:31:36

22

要保存它

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

檢索它

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

+1用於指出如何再次取回數值。 – 2012-02-09 21:39:16

0
[newContact setBool:[NSNumber numberWithBool:important.on] forKey:@"important"]; 
5

其他海報是正確的,你需要使用ISON方法來獲取值,但是它返回一個布爾值,你不能直接傳遞給setValue:因爲該方法預計forKey一個東西。

要設置您的核心數據對象的值,首先把它包在一個NSNumber,像這樣:

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

把NSNumber數據放入一個布爾屬性是正確的?我已根據您的回答更正了我的代碼,但保存數據後仍然存在錯誤。 – Eristikos 2012-02-09 22:02:12

+0

NSNumber是將BOOL作爲對象封裝的官方方式,因此它應該可以工作。你看到什麼錯誤? – 2012-02-09 22:18:52

+0

另一種選擇是使用@property(monatomic,assign)將重要屬性聲明爲核心數據類的BOOL BOOL important;然後使用「@動態重要」;在.m文件中進行合成。然後,您可以直接使用newContact.important = important.on將其設置爲BOOL; – 2012-02-09 22:21:57

3

我用

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

而且

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