2015-05-04 16 views
12

Tôi vẫn còn rất mới để phát triển iOS và nhanh chóng và không chắc chắn nếu tôi đang overthinking này. Tôi hiện đang làm việc trên một ứng dụng khi mở yêu cầu người dùng nhập thông tin đăng nhập của họ. Điều này trở nên tẻ nhạt và bực dọc vì mỗi khi ứng dụng được đóng lại và mở lại, người dùng phải đăng nhập. Có cách nào đơn giản để làm cho chương trình nhớ nếu người dùng đã đăng nhập không?Swift: Cách lưu trữ tùy chọn của người dùng?

Tôi đã xem xét CoreData nhưng mỗi ví dụ liên quan đến việc lưu trữ một đối tượng mới mỗi lần và yêu cầu truy vấn một số loại để tìm nạp thông tin. Trường hợp như tất cả tôi thực sự cần là một bool isLoggedIn và một int cho ID người dùng được lưu trữ.


Edit:

NSUserDefaults là chính xác những gì tôi đang tìm kiếm.

+1

Bạn có thể muốn xem xét 'NSUserDefaults' và' keyChain' nếu bạn cần lưu trữ mật khẩu. – rmp

+0

'NSUserDefaults' hoàn hảo giống như những người khác được đề xuất. Chúng là một cách đơn giản và dễ dàng để đặt giá trị mặc định cố định cho các kiểu dữ liệu đơn giản. 'CoreData' phức tạp hơn và được sử dụng để lưu trữ nhiều loại dữ liệu phức tạp hơn nhưng đối với những thứ đơn giản như số nguyên, boolean, chuỗi, v.v. 'NSUserDefaults' là hoàn hảo. –

+0

Tôi sẽ sử dụng một tệp JSON đơn giản và sử dụng GPG để mã hóa nó thành một số cấp độ điên rồ, keychain có thể được đồng bộ hóa với iCloud, tức là, không an toàn. Tôi không tin Apple với mật khẩu của tôi, tại sao bạn nên? Với móc khóa, nếu ai đó đánh cắp/hack điện thoại hoặc máy tính xách tay của bạn, bạn có thể phải chịu số phận. –

Trả lời

20

Bạn có thể sử dụng NSUserDefaults để lưu thông tin và truy xuất thông tin vào lần tiếp theo khi ứng dụng khởi chạy.

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/index.html

Ví dụ:

NSUserDefaults.standardUserDefaults().setObject("mynameisben", forKey: "username") 

let userName = NSUserDefaults.standardUserDefaults().stringForKey("username") 
+0

NSUserDefaults có phương pháp cụ thể để truy xuất Chuỗi. Nó được gọi là NSUserDefaults(). StringForKey(). BTW objectForKey() trả về một tùy chọn bạn nên sử dụng nếu để unwrap nó hoặc sử dụng "??" nil coalescing nhà điều hành để trả về một giá trị mặc định thay vì nil nếu không có giá trị được lưu trữ –

+1

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/index.html#// apple_ref/occ/instm/NSUserDefaults/stringForKey: –

+1

'NSUserDefaults.standardUserDefaults(). synchronize()' Cần thiết phải không? – eliasRuizHz

7

Sử dụng NSUserDefaults

Let defaults = NSUserDefaults.standardUserDefaults() 
defaults.setObject("User", forKey: "userName") 

Kiểm tra xem tên tài khoản tồn tại khi ứng dụng được bắt đầu vào của bạn AppDelegate.swift

didFinishLaunchingWithOptions 

Nếu tên tồn tại, bỏ qua đăng nhập trang

Để kiểm tra xem NSUserDefaults is nil

if (defaults.objectForKey(userName) != nil) { 
// Skip Login 
} 
else {// Show login 
} 
+0

Làm cách nào để bạn "bỏ qua đăng nhập"? điều này đơn giản như làm cho khung nhìn đã được xác thực là bộ điều khiển gốc? và sau đó hiển thị thông tin đăng nhập trên đầu nếu không có ai được xác thực (như được xác định bởi NSUserDefaults)? – Neurax

Các vấn đề liên quan