好吧,我仍然在我的 iOS 项目中处理 Core Data,我想我很清楚它在概念上是如何工作的,但是我正在纠结如何在我的项目中实现它。我在我的 Xcode 项目中创建了一个场景,我希望软件的用户/运算符(operator)创建一个用户帐户,并将其存储在项目中。
首先让我声明一下,我以单一 View 应用程序开始这个项目,并且我通过执行以下操作将 Core Data 实现到我的项目中:
- 链接到我项目中的核心数据框架
- 然后创建了另一个勾选 Core Data 复选框的项目
- 复制/粘贴 AppDelegate.h/m 文件中的代码。
- 创建了file.xcdatamodeld
- 将以下行添加到 KegCop-Prefix.pch 文件中
#import <CoreData/CoreData.h>
- 创建了一个实体Account,并在文件中添加了以下属性email phoneNumber username .xcdatamodel
完成我认为必要的步骤后,我开始寻找一些关于核心数据的教程。我确实设法找到了一些,但它们似乎都与使用 UITableViewController 有关。我试图在我的项目中实现核心数据的 View Controller 是一个 UIViewController/p>
然后,在得知不应将密码存储在 Core Data 数据库中后,我决定弄清楚我将如何存储用户将创建的 pin。我遇到了一个实现 Core Data & Keychain 的教程,用于将非敏感数据存储在 Core Data 数据库中,将敏感数据存储在 Keychain 中。教程可见here .然而,该教程尚未准备好 ARC,因此需要对某些 KeychainHelper.m 文件进行一些修改。在some help之后来自 stackoverflow 的 KeychainHelper.m 文件似乎已准备好 ARC。
完成上述教程后,现在我的项目中有了三个新类,AccountBase、Account 和KeychainHelper。我的项目目前正在构建,没有任何错误\o/但我希望能够将新创建的类实现到我的项目中,即实际使用它们。这是本教程不讨论的内容。现在请记住,我几乎每天都在使用 Xcode 近一个月了,所以我对很多东西还是陌生的。其中之一就是我如何将这些新类实现到我的项目中。
基本上,我希望用户输入用户名、pin(两次)电子邮件和电话号码。我想将用户名、电子邮件和电话号码存储在核心数据数据库中,并将个人识别码存储在钥匙串(keychain)中。
我如何在我的 ViewControllerCreate 中使用新创建的类文件 Account 来检索用户输入到文本字段中的值并将它们存储到 Core数据数据库?
抱歉发了这么长的帖子,我想我会尽量把它说清楚,这样就不会有任何混淆。
最佳答案
通过使用以下代码行将 Account 类导入到 ViewControllerCreate 类的 header 中,我能够解决这个问题。
#import "Account.h"
我能够通过以下代码在各种类/ View Controller 中使用 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]);
关于ios - 如何将核心数据与多个 View Controller 和自定义类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059008/