2010-07-17 11 views
5

tôi có một textfield,Lưu tên người sử & đèo Objective C iPhone

Số và mật khẩu

tôi không có đầu mối làm thế nào để lưu các thiết lập và sau đó đọc chúng như các ứng dụng khởi động để kiểm tra xem họ đã được thiết lập hay không.

Cảm ơn

Mason

Trả lời

5

Để Tiết kiệm:

[[NSUserDefaults standardUserDefaults] setValue:_email forKey:@"email"]; 
[[NSUserDefaults standardUserDefaults] setValue:_password forKey:@"password"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Để đọc:

_email = [[NSUserDefaults standardUserDefaults] stringForKey:@"email"]; 
_password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"]; 

Trong trường hợp của bạn:

[[NSUserDefaults standardUserDefaults] setValue:Number.text forKey:@"Number"]; 

Và:

NSString * number = [[NSUserDefaults standardUserDefaults] stringForKey:@"Number"];

Các "chủ chốt" thường được mã hóa cứng và hoạt động như một "tên biến" cho những thứ trong lưu trữ (cặp tên điển hình/giá trị như một cuốn từ điển).

Để kiểm tra xem giá trị đã được đặt hay chưa; sau khi bạn đọc:

if (number) ...
+1

như vậy cho textfield tên Số thats một IBOutlet tôi sẽ sử dụng này: [[NSUserDefaults standardUserDefaults] setValue: _number forKey: Number.text]; [[NSUserDefaults standardUserDefaults] setValue: _password forKey: Password.text]; [[NSUserDefaults standardUserDefaults] synchronize]; – user393273

+0

Thông thường "Khóa" được mã hóa cứng ... đây là phân loại như "tên biến" của bạn cho giá trị đang được lưu trữ ... như thế này ... [[NSUserDefaults standardUserDefaults] setValue: Number.text forKey: @ "Con số"]; Điều đó có hợp lý không? – Steve

+0

Thao tác này sẽ hoạt động nhưng không an toàn. Bạn nên lưu trữ thông tin nhạy cảm trong Keychain. –

13

Thông tin nhạy cảm phải được lưu trữ trong móc khóa, vị trí an toàn mã hóa trên thiết bị. Nếu bạn lưu tên người dùng và/hoặc mật khẩu trong NSUserDefaults, bạn sẽ lưu chúng dưới dạng văn bản thuần túy, vốn không an toàn.

Có rất nhiều ví dụ trên internet về cách sử dụng móc khóa trên iPhone, bao gồm trình bao bọc đơn giản để sử dụng trong mã của bạn. Ví dụ, đây là một số mã khá tốt trên Github mà làm cho nó khá dễ dàng:

http://github.com/ldandersen/scifihifi-iphone/tree/master/security

+1

Câu trả lời hay hơn tôi. Cảm ơn bạn về thông tin. Tất nhiên, bất kỳ nhà phát triển nào cũng cần xác định mức độ bảo mật cần thiết cho mục đích của ứng dụng của riêng họ và hiểu được những hạn chế của việc sử dụng keychain (hỗ trợ giả lập, hỗ trợ ứng dụng cài đặt, độ phức tạp và thời gian dev). – Steve