我是xcode的新手,我刚刚构建了我的第一个应用程序。基本上它是一堆从数据库中获取值的标签。有一天,我的互联网没有工作,并没有意识到它,我去运行我的应用程序,并有空标签。我要做的是,如果变量数据为零,则从先前获取值。我想在教程中看到了一些关于将值放入内存的东西。我问的可能吗?这是我的一些代码:
NSURL *url = [NSURL URLWithString:@"http://myserver.com/GetData.php"];
NSData *data = [NSData dataWithContentsOfURL:url options:0 error:nil];
答案 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找到更多。
对于NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:yourData forKey:@"data"];
[[NSUserDefaults standardUserDefaults] synchronize];
无论您走哪条路,请确保在收到新值后删除旧值。如果由于任何原因没有获得新值,您可以尝试自己修改或者可以从本地商店获取值。
我通常更喜欢.plist
暂时使用。因为您不需要长时间使用数据。另外NSUserDefaults
是ios级别商店,我不想大规模使用它,但这是我的偏好。你可以去任何一个。
希望这会有所帮助:)