将值放入内存?

时间:2013-07-11 04:14:45

标签: ios objective-c

我是xcode的新手,我刚刚构建了我的第一个应用程序。基本上它是一堆从数据库中获取值的标签。有一天,我的互联网没有工作,并没有意识到它,我去运行我的应用程序,并有空标签。我要做的是,如果变量数据为零,则从先前获取值。我想在教程中看到了一些关于将值放入内存的东西。我问的可能吗?这是我的一些代码:

NSURL *url = [NSURL URLWithString:@"http://myserver.com/GetData.php"];
        NSData *data = [NSData dataWithContentsOfURL:url options:0 error:nil];

3 个答案:

答案 0 :(得分:2)

是的,您尝试做的事情称为“缓存”。 Here's a tutorial on how it can be done for images

如果我要修改你的代码,我会把你服务器上的数据写入“~/Library/Caches”中的某个文件中,如果服务器在后续启动时没有响应,我会从该缓存文件加载以前的数据。

答案 1 :(得分:0)

在你的.h文件中

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    NSData * data;
}
@end

在你的.m文件中

- (void)viewDidLoad
{
    [super viewDidLoad];

   NSURL *url = [NSURL URLWithString:@"http://myserver.com/GetData.php"];
   data = [NSData dataWithContentsOfURL:url options:0 error:nil];
  [self saveToUserDefaults];
    }

您可以将其存储在数据库或NSUserDefaults中,以便在userDefault中保存数据使用此代码

- (void)saveToUserDefaults
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:data forKey:@"data"];
    [defaults synchronize];
    NSLog(@"Dilip Data saved");
}

当您希望该数据重新使用此代码时。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [defaults dataForKey:@"data"];
NSLog(@"Dilip Data : %@",data);

答案 2 :(得分:0)

是的,这是可能的。您需要将此数据存储到本地。 XCode只是一个开发工具,因此它不会为您存储数据。您必须将数据存储到文档目录中的某个文件中。可能正在使用SQLite数据库或.plist文件或NSUserDefaults

对于SQLIte,教程很少: http://www.raywenderlich.com/902/sqlite-101-for-iphone-developers-creating-and-scripting http://www.tutorialspoint.com/ios/ios_sqlite_database.htm

你可以通过googleing找到更多。

使用.plist http://www.theappcodeblog.com/2011/07/18/iphone-development-tutorial-create-a-plist-programmatically-after-user-action/

对于NSUserDefaults

[[NSUserDefaults standardUserDefaults] setObject:yourData forKey:@"data"];
[[NSUserDefaults standardUserDefaults] synchronize];

无论您走哪条路,请确保在收到新值后删除旧值。如果由于任何原因没有获得新值,您可以尝试自己修改或者可以从本地商店获取值。

我通常更喜欢.plist暂时使用。因为您不需要长时间使用数据。另外NSUserDefaults是ios级别商店,我不想大规模使用它,但这是我的偏好。你可以去任何一个。

希望这会有所帮助:)