1)我正在开发一个包含一个tableview的应用程序,在tableview上方有一个水平scrollview,其中包含动态按钮的数量eg.button1,button2 ....
2)触摸每个按钮json正在进行,我正在使用NSURLSession.eg解析并在tableview中显示json。按一下button1 json将会触摸,触摸button2时会出现不同的json。
3)之后我想将每个按钮json数组存储到单个数组中并相应地显示。假设我点击了button2 json将来,应该存储在数组中,以便将来我修饰按钮数据应该来自存储的数组。
我是管理点1& 2但不知道如何解决3分。 我还添加了一个图像,可以清楚地了解我的问题。 如果有任何人有想法,请回复此问题。谢谢。
答案 0 :(得分:2)
如果需要,您可以使用NSCache
来缓存项目,它就像NSDictionary
一样。
// Init NSCache and declare somewhere as property//you must use singleton approach as well, it's just example i have initialized in viewDidLoad
- (void)viewDidLoad
{
self.cache = [NSCache alloc] new];
}
-(void)callApiForKey:(NSString *)buttonName{
id aObject = [self.cache objectForKey:buttonName]
if aObject == nil {
//perform the API call you are talking about
//after the fetch is preformed and you get data...
[self.cache setObject: dataObject forKey:buttonName];
//perform what you need to with said object
} else {
//perform operation with cached object
}
}
用途:
在您的按钮上单击动作调用上面的方法与buton文本: yourButton.titleLabel.text。
[self callApiForKey:yourButton.titleLabel.text];
是自己的密钥must
是唯一的。另外,你可能会明显地得到/设置错误的数据。
由于
答案 1 :(得分:0)
-Each button have a unique tag right? Like button 1 have tag 1, button 2 have tag 2 ,button 3 have tag 3,
-you can manage this thing by Global nsmutabledictionary and nsmutableArray.
-if you click on button 1 before api calling you check
if(dictionary valueforkey:@"1") (1mean selected button tag)
{
no need to call api
no need to add array in dictionary
array=[[dictionary valueforkey:@"1"]mutablecopy];(1mean selected button tag)
[tble reloaddata];
}
else
{
api calling
here you can add array in dictionary
[dictionary setobject:yourarray forkey:@"1"];
array=[[dictionary valueforkey:@"1"]mutablecopy];(1mean selected button tag)
[tble reloaddata];
}