2016-08-12 40 views
-1

我想要的是,我有五个按钮,我必须检索json中的五个图像(1,2,3,4,5),之后如果我有点击第一个按钮装置,然后按1,2,3,4,5顺序显示图像,选择第二个按钮装置后,按2,3,4,5,1顺序显示图像,选择第三个按钮装置后然后按3,4,5,1,2顺序显示图像,选择第四个按钮后,按4,5,1,2,3顺序显示图像,选择第五个按钮后显示图像5 ,1,2,3,4顺序,多数民众赞成在我的问题,请你指导我做了这个操作,任何解决方案,非常感谢,谢谢。显示json图像的顺序,同时点击按钮

+0

那么你的JSON结构是什么样子? – ldindu

+0

CODE: [{ “image1" 的:“www.image1.com”, \t“ID“:1, \t },{ \t“图像2" :“www.image2.com”, \t “ID“:2, },{ “图像3" :‘www.image3.com’, \t“ID”:3, \t },{ \t“图像4" :“www.image4.com “, \t”id“:4, },{ \t“图像5" :“www.image5.com”, \t‘ID’:5, }] –

回答

0

您需要标记按钮以标识哪个按钮已被按下,并且在您的相应操作中,您需要检索标记以标识已被点按的按钮。我不会描述如何标记按钮,因为您可以从堆栈溢出中获得答案。但为了这个例子,我直接存储在图像中,您可以检索并将响应从JSON转换为相应的数组。

var images: [[String: AnyObject]] = [ 
     [ "image1" : "www.image1.com", "id" : 1 ], 
     [ "image2" : "www.image2.com", "id" : 2 ], 
     [ "image4": "www.image4.com", "id" : 4 ], 
     [ "image3": "www.image3.com", "id" : 3 ], 
     [ "image5": "www.image5.com", "id" : 5 ]] 

你需要对数组进行排序,一旦你已经从JSON获得了它如下:

images.sort {($0["id"] as? Int) < ($1["id"] as? Int)} 

一旦你已经整理阵列,可以实现的功能来获取图像的基于阵列如下图所示的要求:

func imagesForButtonIndex(_ buttonIndex: Int) -> [[String: AnyObject]] { 
    var sortedImages = images.filter { ($0["id"] as? Int) >= buttonIndex} 
    sortedImages.append(contentsOf:images.filter {($0["id"] as? Int) < buttonIndex}) 
    return sortedImages 
} 

调用

imagesForButtonIndex(5) 

你会检索图像按要求如下图所示

enter image description here

+0

你好idindu,我只知道目标C,但在迅疾的一些代码才明白剩下的事情就不能对我来说是理解的,所以你可以解释一下,我必须学习 –