アプリのアカウントを作成するコードを実装しようとしています。これまでのところ、テキストフィールドからデータを取得してコアデータデータベースに保存することは十分に理解していると思いますが、ユーザーが作成したピンをアプリのキーチェーンに保存する方法がわかりません。私は、 AccountBaseのサブクラスであると思うAccountというクラスを作成するこのチュートリアルに従いました。Account.mファイルには、次のメソッド宣言があります。
- (void)setPassword:(NSString*)aPassword
これが、アプリケーションの「ピン」を設定するために使用したい方法であると確信しています。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.");
}
}
「作成」ボタンが押されたときに、入力されたピンをキーチェーンに保存する方法は誰でも知っています。