2012-02-09 28 views
21

Tôi là lập trình viên iOS mới và tôi gặp sự cố.Làm thế nào để có được giá trị của một UISwitch?

Tôi hiện đang làm việc trên Dữ liệu lõi iOS và vấn đề của tôi là tôi muốn chèn dữ liệu vào thuộc tính boolean vào cơ sở dữ liệu bằng cách lấy giá trị UISwitch.

Vấn đề là tôi không biết phương thức tôi phải gọi là gì (ví dụ: văn bản thực hiện điều tương tự nhưng đối với UITextField). Tôi đã thực hiện một tìm kiếm google nhỏ nhưng không có kết quả. Dưới đây là một số mã:

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

howmany là một textfield, quan trọng là một UISwitch

Trả lời

17

Bạn đã nhìn vào tài liệu cho UISwitch? Nói chung, bạn nên làm cho tài liệu là điểm gọi đầu tiên của bạn khi tìm kiếm thông tin, sau đó chuyển sang google và sau đó để ngăn xếp tràn nếu bạn thực sự không thể tìm thấy những gì sau của bạn.

Bạn muốn @property(nonatomic, getter=isOn) BOOL on bất động sản như:

important.isOn 

Nếu bạn không có dữ liệu cốt lõi thiết lập để sử dụng nguyên thủy bạn có thể phải quấn boolean rằng trong một NSNumber:

[NSNumber numberWithBool:important.isOn] 
+3

Đó nên là important.on hoặc [important isOn]. important.isOn sẽ không hoạt động. –

+0

@NickLockwood Tài liệu tuyên bố thuộc tính là '@property (nonatomic, getter = isOn) BOOL trên ' –

+3

@ Paul.s đúng, nhưng' isOn' chỉ được sử dụng khi bạn thực sự sử dụng nó làm phương thức. Nếu bạn đang sử dụng cú pháp chấm, bạn sử dụng tên của thuộc tính: 'on'. –

22

Để tiết kiệm it

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

Để truy xuất số

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

+1 để chỉ ra cách lấy lại giá trị. –

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

Các áp phích khác là chính xác mà bạn cần phải sử dụng phương pháp Ison để có được những giá trị, tuy nhiên điều này trả về một giá trị BOOL, mà bạn không thể vượt qua trực tiếp đến setValue: forKey vì phương pháp mà hy vọng một đối tượng.

Để thiết lập giá trị trên đối tượng dữ liệu cốt lõi của bạn, đầu tiên quấn nó trong một NSNumber, như thế này:

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

Đưa dữ liệu NSNumber vào thuộc tính boolean là chính xác? Tôi đã sửa mã của tôi dựa trên câu trả lời của bạn nhưng lỗi vẫn còn sau khi lưu dữ liệu. – Eristikos

+0

NSNumber là cách chính thức để bọc BOOL làm đối tượng, vì vậy nó sẽ hoạt động. Bạn đang thấy lỗi gì? –

+0

Một tùy chọn khác là khai báo thuộc tính quan trọng là BOOL trong lớp dữ liệu cốt lõi của bạn bằng cách sử dụng @property (monatomic, assign) BOOL quan trọng; và sau đó sử dụng "@dynamic important;" trong tệp .m để tổng hợp nó. Sau đó bạn có thể đặt trực tiếp nó thành BOOL bằng newContact.important = important.on; –

3

tôi đã sử dụng

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

[NSString stringWithFormat:@"%@",(self.allNotificationSwitch.isOn ? @"Yes":@"No")]; 
Các vấn đề liên quan