2015-11-08 5 views
7

Chciałbym zapisać dane w mojej aplikacji, użyłem DataCore do zapisania, ale zapisz dane w encji, a atrybut w tej encji może zapisać wiele różnych wartości. Potrzebuję danych zapisanych tylko jedną wartość dla każdego atrybutu jako preferencję w systemie Android. Jak mogłem to zrobić? Proszę pomóż mi. Dziękuję Ci. To jest mój kod:Czy istnieje sposób na zapisanie nazwy użytkownika i hasła na urządzeniu za pomocą szybkiego w systemie iOS, który jest taki sam jak w systemie Android?

@IBAction func SaveAll(sender: AnyObject) { 
    let username:String = user_name.text! 
    let password:String = pass_word.text! 

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    let context:NSManagedObjectContext = appDel.managedObjectContext 

    let newStu = NSEntityDescription.insertNewObjectForEntityForName("Student", inManagedObjectContext: context) as NSManagedObject 
    newStu.setValue(username, forKey: "userName") 
    newStu.setValue(password, forKey: "passWord") 

    do { 
     try context.save() 
    } catch {} 

} 
+3

Jeśli zamierzasz przechowywać poufne informacje, takie jak hasła, zdecydowanie zalecamy zapoznanie się z interfejsami API pęku kluczy iOS – 72A12F4E

+0

Dziękuję za odpowiedź. Mam na myśli to, że po podaniu przez użytkownika nazwy użytkownika lub hasła ta nazwa użytkownika zostanie zapisana jako wartość tylko w pamięci urządzenia użytkownika. A gdy użytkownik ponownie otworzy aplikację, ta zapisana wartość nazwy użytkownika może zostać ponownie wykorzystana do zrobienia czegoś. Czy brelok może to zrobić? –

+1

zdecydowanie. Ten link opisuje, jak działa keychain i jak z niego korzystać. https://developer.apple.com/library/mac/documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html Jest to kludgy C API, ale działa. Alternatywnie, tutaj jest o wiele bardziej użyteczne opakowanie wokół tych interfejsów API, których używam w większości moich projektów. https://github.com/kishikawakatsumi/UICKeyChainStore – 72A12F4E

Odpowiedz

8

Należy użyć NSUserDefaults to zrobić. Umożliwia zapisanie niezabezpieczonych danych w swoich preferencjach. Ponadto, zamiast hasła, możesz chcieć przechowywać klucz do zarządzania sesjami, który otrzymujesz z serwera za każdym razem, gdy logujesz się po określonym czasie. Byłoby to trochę bezpieczniejsze niż przechowywanie hasła.

Dzięki , zapisujesz, co chcesz, w magazynie kluczy i wartości trwałych w telefonie, i nie będziesz musiał zadzierać ze skomplikowanymi materiałami CoreData.

Po prostu zrób to jak ten

@IBAction func SaveAll(sender: AnyObject) { 
    let username:String = user_name.text! 
    let password:String = pass_word.text! 

    let defaults = UserDefaults.standard 

    defaults.setObject(username, forKey: "username") 
    defaults.setObject(password, forKey: "password") 
} 

Następnie można wywołać odpowiednie funkcje defaults.stringForKey("username") i hasło, aby pobrać je z łatwością.

+0

Jedna z osób, które przejrzały moją edycję, zauważyła, że ​​lepiej zachować starszą wersję i dodać nowszą wersję obok niej. Zastanowiłem się nad tą opcją, ale nie chciałem zbytnio mieszać się ze strukturą twojej odpowiedzi. Może chcesz się przytyć? – SwiftsNamesake

Powiązane problemy