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 subscriptionitems[“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)`)该值是正确的