如何存储用户输入的详细信息并在ios中获取?

时间:2016-03-08 11:06:26

标签: ios objective-c core-data uitextfield nsuserdefaults

如何Store用户在ios中输入详细信息和Get it Back

  • 我有以下 TextFields

  • UserNameEmailRe-enter Email idPhoneStateAddressLocalityPincode

  • 我想 store 本地 Current viewController 中的此详细信息 display Next ViewController ....

  • 中的详细信息
  • How many Ways 我可以 Store Fetch 详情,有没有人知道在哪里可以找到更多相关信息吗?

3 个答案:

答案 0 :(得分:1)

您是否希望保持用户信息持久性(1)或者您只需要表示该数据并发送到电子邮件(2)? 1.如果您需要使用Core Data在持久存储中保存用户信息,则必须使用您的属性创建名为“User”的实体(名称,中间名,姓氏,用户名,电子邮件,重新输入电子邮件ID,电话,州,地址,locality和pincode) - 所有这些字段都可以是字符串类型。在“编辑器”选项卡的帮助下,您应该为您的实体创建NSManagedObject子类。与使用textFields的VC相比,您需要为User实例的属性填充这些数据并保存。而且您可以检索到您想要的位置并为用户显示 2.如果您只需要显示和发送到电子邮件的用户信息,您可以通过使用NSUserDefaults使其变得更简单:

//保存

[[NSUserDefaults standardUserDefaults] setObject:textFieldName.text forKey:@"name"];

//获取数据

[[NSUserDefaults standardUserDefaults] valueForKey:@"name"];

或者,如果需要始终保留此信息,并且只需要一个应用程序启动会话 - 只需通过textFields的text属性值设置ViewControllerWhereYouWantToPresentInfo的公共属性。

答案 1 :(得分:0)

我建议您创建变量并将数据存储在那里。一旦准备好转到下一个视图控制器,就可以以这种方式将数据传递给下一个视图控制器

let nextVC = self.storyboard!.instantiateViewControllerWithIdentifier("NextVCStoryBoardId") as! NextVCViewController 
nextVC.variable1 = variable1 //variable1 is in currentVC
nextVC.variable2 = variable2 //variable2 is in currentVC

依旧......

然后您可以使用此代码

推送到nextVC
self.navigationController!.pushViewController(nextVC, animated: true)

在nextVC中,您可以对按钮执行操作以将数据发送到邮件。

答案 2 :(得分:0)

如果用户数据正确存储在核心数据中,您可以使用NSFetchedResultsController(FRC)或简单的NSFetchRequest来检索它。在这两种情况下,您都将为“用户”实体创建NSFetchRequest,并为其分配NSPredicate。谓词的定义类似于SQL查询。 NSFetchRequest将检索与谓词匹配的任何托管对象。

您可以考虑将这些参数作为参数或公共属性传递给第二个viewController,而不是将它们提取并存储在CoreData中。 CoreData非常适合在需要查询时将数据保存在磁盘上(如SQL数据库)。当需要频繁更新UI以反映持久数据的变化时,它也很有用。您可以使用NSFetchedResultsContoller监视数据模式的更改,并自动向UI层通知这些更改。

使用NSFetchRequest的示例,它是您所要求的最简单的方法。它假设您有一个名为“UserDetails”的实体,它有一个名为“user_id”的属性来标识特定用户

// A pointer to your main thread context, since you will be using this info to 
// populate data on the UI. I typically use a singleton pattern to access my 
// managed object context 
NSManagedObjectContext *context = [DBController sharedInstance].mainManagedObjectContext;
// Create the fetch request
    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"UserDetails"];

// Assign the predicate
        fetchRequest.predicate = [NSPredicate predicateWithFormat:@"user_id = %@",<the_users_id>];

// Execute the fetch request on the main thread managed object context
        NSError *error = nil;
        NSArray *objects = [context executeFetchRequest:fetchRequest error:&error];
    UserDetail *detail = [object firstObject];