簡體   English   中英

核心數據+鑰匙串,用於為應用程序創建ios帳戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM