如何存储用户输入的详细信息并在 ios 中取回?
How to Store User Entered Details and Get It Back in ios?
如何 Store
用户在 ios 中输入详细信息和 Get it Back
?
我有关注 TextFields
:
UserName
,Email
,Re-enter Email id
,Phone
,
State
、Address
、Locality
和Pincode
.
我想 store
这个细节在 Current viewController
本地和
display
这个细节在 Next ViewController
.....
How many Ways
我可以 Store
和 Fetch
详细信息,有人知道我在哪里可以找到更多相关信息吗?
我建议您创建变量并将数据存储在那里。一旦准备好转到下一个视图控制器,就可以以这种方式将数据传递到下一个视图控制器
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 中,您对按钮进行操作以将数据发送到邮件。
您是想让用户信息持久化(1),还是只需要此数据来表示它并发送到电子邮件(2)?
1.If 您需要使用核心数据将用户信息保存在持久存储中您必须使用您的属性创建名为 'User' 的实体(姓名、中间名、姓氏、用户名、电子邮件,重新输入电子邮件 ID,phone, state, address,locality and pincode) - 所有这些字段都可以是字符串类型。在 'Editor' 选项卡的帮助下,您应该为您的实体创建 NSManagedObject 子类。与在带有文本字段的 VC 中相比,您需要为 User 实例的属性填充这些数据并保存。然后你可以检索你想要的地方并显示给用户。
2.If 你需要用户信息来显示和发送到电子邮件你可以通过使用 NSUserDefaults 来简化它,例如:
//保存
[[NSUserDefaults standardUserDefaults] setObject:textFieldName.text forKey:@"name"];
//获取数据
[[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
或者,如果需要始终保留此信息并且您只需要在一个应用程序启动会话中使用它 - 只需通过文本 属性 textFields 的值设置 ViewControllerWhereYouWantToPresentInfo 的 public 属性。
如果用户数据正确存储在核心数据中,您可以使用 NSFetchedResultsController (FRC) 或简单的 NSFetchRequest 检索它。在这两种情况下,您都将为 'user' 实体创建一个 NSFetchRequest 并为其分配一个 NSPredicate。谓词的定义类似于 SQL 查询。 NSFetchRequest 将检索与谓词匹配的任何托管对象。
您可能会考虑将这些参数作为参数或 public 属性传递给第二个 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];
如何 Store
用户在 ios 中输入详细信息和 Get it Back
?
我有关注
TextFields
:UserName
,Email
,Re-enter Email id
,Phone
,State
、Address
、Locality
和Pincode
.我想
store
这个细节在Current viewController
本地和display
这个细节在Next ViewController
.....How many Ways
我可以Store
和Fetch
详细信息,有人知道我在哪里可以找到更多相关信息吗?
我建议您创建变量并将数据存储在那里。一旦准备好转到下一个视图控制器,就可以以这种方式将数据传递到下一个视图控制器
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 中,您对按钮进行操作以将数据发送到邮件。
您是想让用户信息持久化(1),还是只需要此数据来表示它并发送到电子邮件(2)?
1.If 您需要使用核心数据将用户信息保存在持久存储中您必须使用您的属性创建名为 'User' 的实体(姓名、中间名、姓氏、用户名、电子邮件,重新输入电子邮件 ID,phone, state, address,locality and pincode) - 所有这些字段都可以是字符串类型。在 'Editor' 选项卡的帮助下,您应该为您的实体创建 NSManagedObject 子类。与在带有文本字段的 VC 中相比,您需要为 User 实例的属性填充这些数据并保存。然后你可以检索你想要的地方并显示给用户。
2.If 你需要用户信息来显示和发送到电子邮件你可以通过使用 NSUserDefaults 来简化它,例如:
//保存
[[NSUserDefaults standardUserDefaults] setObject:textFieldName.text forKey:@"name"];
//获取数据
[[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
或者,如果需要始终保留此信息并且您只需要在一个应用程序启动会话中使用它 - 只需通过文本 属性 textFields 的值设置 ViewControllerWhereYouWantToPresentInfo 的 public 属性。
如果用户数据正确存储在核心数据中,您可以使用 NSFetchedResultsController (FRC) 或简单的 NSFetchRequest 检索它。在这两种情况下,您都将为 'user' 实体创建一个 NSFetchRequest 并为其分配一个 NSPredicate。谓词的定义类似于 SQL 查询。 NSFetchRequest 将检索与谓词匹配的任何托管对象。
您可能会考虑将这些参数作为参数或 public 属性传递给第二个 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];