本地内存以及Web服务

时间:2014-04-09 06:19:45

标签: ios objective-c

即使经过这么多研究,我还没有找到解决这个问题的方法。我目前正在开发一个应用程序,它使用3个视图控制器进行注册,并带有注销按钮。最后一个视图控制器具有“注册”按钮,用于保存Web服务中注册的所有详细信息。但是如果用户填写了两个视图表单并注销了。两个视图填充表单字段应保存在本地内存中,并且用户再次将其记录,预填充表单应加载保存在内部存储器中的字段,以继续注册Web服务。任何想法如何实现这种功能

3 个答案:

答案 0 :(得分:1)

如果要保存大量数据,请使用CoreData,否则请使用NSUserDefaults进行保存。

答案 1 :(得分:1)

正如其他人所说,NSUserDefaults足以满足您的需求。

NSUserDefaults *registrationInfo = [NSUserDefaults standardUserDefaults];

猜猜您的文字字段中包含您需要的信息。因此,取出文本并保存到这样的密钥。

[registrationInfo setObject:self.someTextFieldName.text forKey@"firstTextField"];

对每个文本字段重复此操作(但使用不同的键名称)后,请调用此[registrationInfo synchronize];

要拉出数据,您可以像第一行一样再次打开默认值。并检索特定密钥:NSString *firstTextField = [registrationInfo objectForKey:@"firstTextField"];

为了使这更容易,您还可以将所有字符串放在数组或字典中,然后将其作为默认值中的对象添加。然后你只需要设置/获取一次。

答案 2 :(得分:1)

我建议你使用 PLIST 这主要有三个步骤。

1)生成.plist文件。

NSError *error1;
BOOL resourcesAlreadyInDocumentsDirectory;
BOOL copied1;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath1 = [documentsDirectory stringByAppendingString:@"/epub.plist"];

resourcesAlreadyInDocumentsDirectory = [fileManager fileExistsAtPath:filePath1];

if(resourcesAlreadyInDocumentsDirectory == YES) {

} else {

    NSString *path1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat:@"/epub.plist"];
    copied1 = [fileManager copyItemAtPath:path1 toPath:filePath1 error:&error1];

    if (!copied1) {
        NSAssert1(0, @"Failed to copy epub.plist. Error %@", [error1 localizedDescription]);
    }
}

2)尝试阅读(打开)它。

NSMutableDictionary* dict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath1]; 

3)将数据写入plist文件。

[dict setObject:[NSNumber numberWithInt:value] forKey:@"value"];
[dict writeToFile:path atomically:YES];

这是一种使用它的简单方法。我建议使用。 plist文件代替NSUserDefaults