0

了解しました。iOSプロジェクトでCoreDataをいじっています。概念的にどのように機能するかはよくわかっていると思いますが、プロジェクトにどのように実装するかについては苦労しています。Xcodeプロジェクトで、ソフトウェアのユーザー/オペレーターにユーザーアカウントを作成してもらい、プロジェクトに保存してもらいたいシーンを作成しました。

最初に、プロジェクトをシングルビューアプリケーションとして開始し、次のようにしてCoreDataをプロジェクトに実装したことを述べさせてください。

  • プロジェクトのCoreDataフレームワークへのリンク
  • 次に、[コアデータ]チェックボックスをオンにして別のプロジェクトを作成しました
  • AppDelegate.h/mファイルにコードをコピーして貼り付けました。
  • 作成されたfile.xcdatamodeld
  • KegCop-Prefix.pchファイルに次の行を追加しました#import <CoreData/CoreData.h>
  • エンティティアカウントを作成し、file.xcdatamodelにの属性emailphoneNumberusernameを追加 まし

必要な手順を完了した後、コアデータに関するチュートリアルをいくつか見つけようとしました。私はなんとかいくつかを見つけることができましたが、それらはすべてUITableViewControllerを使用して処理しているようでし たプロジェクトにCoreDataを実装しようとしているViewControllerはUIViewControllerです

次に、Core Dataデータベースにパスワードを保存するべきではないことを知った後、ユーザーが作成するピンをどのように保存するかを理解することにしました。機密データをコアデータデータベースに保存し、機密データをキーチェーンに保存するために、コアデータとキーチェーンを実装するチュートリアルに出くわしました。チュートリアルはここにあります。ただし、チュートリアルはARCに対応していなかったため、 KeychainHelper.mファイルの一部に変更を加える必要がありました。stackoverflowの助けを借りた後、KeychainHelper.mファイルはARC対応のようです。

上記のチュートリアルを完了した後、プロジェクトに3つの新しいクラス、AccountBaseAccount、およびKeychainHelperがありました。私のプロジェクトは現在\o/でエラーなしでビルドされていますが、新しく作成されたクラスをプロジェクトに実装できるようにしたい、つまり実際に使用できるようにしたいと考えています。これは、チュートリアルでは説明されていないことです。今、私はほぼ1か月間、ほぼ毎日Xcodeを使用しているので、まだ多くのことに慣れていないことを覚えておいてください。そして、それらの1つは、これらの新しいクラスをプロジェクトに実装する方法です。

基本的に、ユーザーにユーザー名、PIN(2回)の電子メール、および電話番号を入力してもらいます。ユーザー名、電子メール、電話番号をコアデータデータベースに保存し、PINをキーチェーンに保存したいと思います。

ViewControllerCreateで新しく作成されたクラスファイルAccountを使用して、ユーザーがテキストフィールドに入力した値を取得し、それらをCore Dataデータベースに保存するにはどうすればよいですか?

長い投稿で申し訳ありませんが、混乱が生じないように、できるだけ明確にしようと思いました。

4

1 に答える 1

3

次のコード行を使用して、AccountクラスをViewControllerCreateクラスのヘッダーにインポートすることで、この問題を解決することができました。

#import "Account.h"

次のコードを使用して、さまざまなクラス/ビューコントローラー全体でManagedObjectContextを使用できました。

// Core Data

if (_managedObjectContext == nil)
{
    _managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
    NSLog(@"After _managedObjectContext: %@", _managedObjectContext);
}

その後、次のコードを使用して、ViewControllerCreateのAccountクラスを利用することができました。

// 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]);
于 2012-06-28T02:43:51.527 に答える