[英]Core Data + keychain for ios account creation for app
我正在嘗試實現代碼來為我的應用創建帳戶。 到目前為止,我認為我對從文本字段中獲取數據並將其存儲在Core Data數據庫中有很好的了解,但是我不確定如何存儲用戶在應用程序的鑰匙串中創建的圖釘。 我按照本教程創建了一個名為Account的類,我認為它是AccountBase的子類。 Account.m文件的方法聲明為:
- (void)setPassword:(NSString*)aPassword
現在,我很確定這是我要用來為應用程序設置“ pin”的方法。 我不確定如何將其應用於ViewControllerCreate.m文件。 整個方法如下所示:
- (void)setPassword:(NSString*)aPassword
{
if (self.username) [KeychainHelper setPassword:aPassword forKey:self.username];
}
到目前為止,我的ViewControllerCreate.m文件中包含以下代碼:
- (IBAction)createAccount:(id)sender {
// hide keyboard when login button is pressed
[_createUserTextField resignFirstResponder];
// check if create textfields are empty - WRONG
[self checkTextFieldCharLength];
// check if boolean is true / false
if([self checkTextFieldEmpty] == TRUE ) // empty text fields
{
NSLog(@"Please fill in text fields");
}
else {
NSLog(@"Thanks for filling out the text fields.");
// Core Data - retrieve values from text fields and store in database.
NSManagedObject *newAccount;
newAccount = [NSEntityDescription insertNewObjectForEntityForName:@"Account" inManagedObjectContext:_managedObjectContext];
[newAccount setValue:_createUserTextField forKey:@"username"];
[newAccount setValue:_createEmailTextField forKey:@"email"];
[newAccount setValue:_createPhoneNumber forKey:@"phoneNumber"];
// TODO store pin in keychain
_createUserTextField.text = @"";
_createEmailTextField.text = @"";
_createPhoneNumber.text = @"";
NSError *error;
[_managedObjectContext save:&error];
[_createAccountSuccess setHidden:NO];
NSLog(@"Succefully created account.");
}
}
任何人都知道,當按下“創建”按鈕時,如何將輸入的圖釘存儲到鑰匙串中。
好吧,由於chat.stackoverflow.com中@Faded的幫助,我有點想出了解決方案。 修改后的代碼如下:
// method to pull text from text fields and store in keychain and account database
- (IBAction)createAccount:(id)sender {
[self checkTextFieldCharLength];
// check if create textfields are empty, check if boolean is true / false
if([self checkTextFieldEmpty] == TRUE ) // empty text fields
{
NSLog(@"Please fill in text fields");
}
else {
NSLog(@"Thanks for filling out the text fields.");
// Core Data - retrieve values from text fields and store in database.
Account *newAccount;
newAccount = [NSEntityDescription insertNewObjectForEntityForName:@"Account" inManagedObjectContext:_managedObjectContext];
[newAccount setValue:_createUserTextField.text forKey:@"username"];
[newAccount setValue:_createEmailTextField.text forKey:@"email"];
[newAccount setValue:_createPhoneNumber.text forKey:@"phoneNumber"];
// TODO store pin in keychain
[newAccount setPassword:_createPinTextField.text];
NSLog(@"Pin saved is %@", [newAccount password]);
_createUserTextField.text = @"";
_createEmailTextField.text = @"";
_createPhoneNumber.text = @"";
_createPinTextField.text = @"";
NSError *error;
[_managedObjectContext save:&error];
[_createAccountSuccess setHidden:NO];
NSLog(@"Succefully created account.");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.