Ios 从JSON设置按钮标题

Ios 从JSON设置按钮标题,ios,json,swift,Ios,Json,Swift,我正在循环查看我的JSON数据,并想将按钮标题相应地设置为我的JSON属性标题。我应该怎么做 func getDataFromJSON(){ //Calling getCollectionViewData from the RestParser class RestParser.sharedInstance.getConfig{json in //iterating to the JSON file to get alle data let res

我正在循环查看我的
JSON
数据,并想将按钮标题相应地设置为我的
JSON
属性标题。我应该怎么做

func getDataFromJSON(){
    //Calling getCollectionViewData from the RestParser class
    RestParser.sharedInstance.getConfig{json in
        //iterating to the JSON file to get alle data
        let results = json[0]["menu"]
        for (index: String,cofigData:JSON)in results{
          self.items.append(cofigData)
        }
        let testString = self.items[0]["title"]
        self.btnCollectionView.setTitle(testString.stringValue, forState: UIControlState.Normal)
        println(testString.stringValue)
    }
}

这就是我所尝试的。我收到的错误是:
不能下标字符串类型的tpye{['JSON]}sign索引的值。

发生错误的原因是
items
显然是一个数组,而key subscription
items[“title”]
需要一个字典。

items
是一个
数组,您必须将其转换为
字典

然后,执行以下操作:

func getDataFromJSON(){
    //Calling getCollectionViewData from the RestParser class
    RestParser.sharedInstance.getConfig{ json in
        //iterating to the JSON file to get alle data
        let results = json[0]["menu"]
        for (index: String,cofigData:JSON)in results{
          self.items[index] = cofigData
        }
        let testString: String = items["title"]
        self.btnCollectionView.setTitle(testString, forState: UIControlState.Normal)
    }
}
注意:
reference cycle
警告,self处于关闭状态。我认为你应该像这样添加
[无主的自我]

RestParser.sharedInstance.getConfig{ [unowned self] json in
        //iterating to the JSON file to get alle data
如果捕获的引用永远不会变为零,则应始终为零 捕获为无主引用,而不是弱引用


关于参考计数的文档

请确保已清除。。但问题是如何解决;)检查类型。数组只能由索引下标,可能
configData
是一个包含键
title
的字典。类似这样的
items[0][“title”]
但它只考虑数组的第一个元素`let testString=self.items[0][“title”]self.btnCollectionView.setTitle(testString.stringValue,forState:UIControlState.Normal)println(testString.stringValue)`这是可行的,但按钮不会更改标题。按钮的标题可以直接由文字字符串设置吗?在调用解析器函数之前,请尝试这样做。还尝试将
setTitle
行分派到主线程
dispatch_async(dispatch_get_main_queue(),{self.btnCollectionView.setTitle(testString.stringValue,forState:UIControlState.Normal)}
是否尝试记录
项[“title”]
,我想这可能是错误的类型,在这里引起错误吗?@ NghiaLuong,问题是它显然是一个数组和密钥订阅。JSON@thedjnivek我更新了我的问题,现在我可以访问特定属性,但是按钮标题没有改变,如果我打印出值(`println(testString.stringValue)`)该值是正确的