我是iOS新手,我正在使用AF-Networking框架来获取Web服务并成功获取数据并将其加载到UI元素中现在我的问题是应用程序性能变慢并且它正在加载Web服务每次我想在本地缓存图像和数据并提高应用程序的性能时,任何人都可以通过适当的解决方案来帮助我。如何实现本地缓存Web服务的数据在iPhone应用程序中恢复回来?
由于提前
我是iOS新手,我正在使用AF-Networking框架来获取Web服务并成功获取数据并将其加载到UI元素中现在我的问题是应用程序性能变慢并且它正在加载Web服务每次我想在本地缓存图像和数据并提高应用程序的性能时,任何人都可以通过适当的解决方案来帮助我。如何实现本地缓存Web服务的数据在iPhone应用程序中恢复回来?
由于提前
我认为你是在谈论无关与NSURLCache
但在本地保存以前的网络请求数据内容。然后下一次发送网络请求之前,您可以先从本地文件读取
在本地保存数据的方式有很多种,如Core Data NSKeyedArchiver plist FMDB。这是我使用NSKeyedArchiver的方式。
(将接口设置在这里,你可以在此链接https://github.com/dopcn/HotDaily/blob/master/HotDaily/HDCacheStore.m读取实现)在XXXAppDelegate.m
@interface HDCacheStore : NSObject
+ (HDCacheStore *)sharedStore;
@property (copy, nonatomic) NSArray *mainListCache;
@property (copy, nonatomic) NSArray *funinfoListCache;
- (BOOL)save;
@end
- (void)applicationWillResignActive:(UIApplication *)application //Or some other place
{
if ([[HDCacheStore sharedStore] save]) {
NSLog(@"save success");
} else {
NSLog(@"save fail");
}
}
“我认为你所说的与NSURLCache无关,而是在本地保存以前的网络请求数据。”这完全是NSURLCache的功能。 – quellish 2014-09-12 15:39:43
哦,我很抱歉,我以为'NSURLCashe'只是某种内存缓存。但只要在文档中找到“它提供了一个复合内存和磁盘缓存”。我会稍后更新答案 – dopcn 2014-09-12 23:38:40
@dopcn:如果我们使用这个缓存是不需要的?如果我面临任何错误 – satishiOS25 2014-09-15 09:30:26
我认为你必须使用NSUserDefaults的,请按照下列
1:创建您需要的数据NSArray
2:用钥匙保存到NSUserDefaults中
3:现在你能够使用的NSArray每类应用
4:如果你想更新数据,只需再次保存到与NSUserDefaults的旧钥匙
所以你不需要每次下载数据,只需下载一次并保存到NSUserDefaults中并使用。 如果在保存在NSUserDefaults的数据再看看代码波纹管
存储信息的问题:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:arrayOfImage forKey:@"tableViewDataImage"];
[userDefaults setObject:arrayOfText forKey:@"tableViewDataText"];
检索信息:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfImages = [userDefaults objectForKey:@"tableViewDataImage"];
NSArray *arrayOfText = [userDefaults objectForKey:@"tableViewDataText"];
// Use 'yourArray' to repopulate your UI
好吧,这应该在AppDelegate中声明? – satishiOS25 2014-09-26 06:39:01
无需在AppDelegate中声明,在您调用Web服务之前,如果数据不足,您可以从用户默认值检索数据,然后您可以调用新服务,并且如果数据不存在,则可以从用户默认值加载本地数据。 – 2014-09-29 07:21:11
在AFNetworking缓存功能已由NSURLCache及其任何子类提供。检查此链接http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/ – 2014-09-12 10:19:58
我建议您使用Core Date,将Web服务数据复制到您的核心数据实体并使用它。您的性能会变得更好。 http://www.raywenderlich.com/934/core-data-tutorial-for-ios-getting-started – 2014-09-12 11:54:20
@Ganesh:是的,我以前通过这个链接,但dint发现如何实现它可以详细说明,如果你'重新认识它。 – satishiOS25 2014-09-12 12:06:11