【发布时间】:2016-02-02 00:45:42
【问题描述】:
我有一个包含术语、描述和 ID 的 JSON 文件(当前是本地文件,但会及时成为 URL)。我想要实现的是在我的初始视图中列出所有术语,然后根据选择的内容,显示一个新视图(通过 segue),其中包含术语+它的相关描述显示。
在我的初始视图控制器中,我有一个 TableView 当前显示来自 JSON 的术语列表。我已设法将所选术语传递到新视图,但我在显示相关描述时遇到了困难。我正在使用 SwiftyJSON,我的解析器看起来像:
func parseJSON(){
let path : String = NSBundle.mainBundle().pathForResource("scrumTerms", ofType: "json") as String!
let jsonData = NSData(contentsOfFile: path) as NSData!
let readableJSON = JSON(data: jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
NumberofRows = readableJSON["Terms"].count
for i in 1...NumberofRows{
var item = "item"
item += "\(i)"
let term = readableJSON["Terms"][item]["term"].string as String!
let description = readableJSON["Terms"][item]["description"].string as String!
let id = readableJSON["Terms"][item]["id"].int as Int!
TermsArray.append(term)
DescriptionArray.append(description)
//IdArray.append(id)
}
显示初始列表如下所示:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell!
if TermsArray.count != 0{
cell.textLabel?.text = TermsArray[indexPath.row]
}
return cell
}
然后我的 segue 部分看起来像:
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow!
let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell
viewTerm = currentCell.textLabel!.text
performSegueWithIdentifier("viewTerm", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if (segue.identifier == "viewTerm") {
// define new view controller
var viewController = segue.destinationViewController as! viewTermController
// define the new view controller property that will store the passed value(s)
viewController.viewTerm = viewTerm
viewController.viewDescription = "THIS IS WHERE I NEED TO GET TO"
}
}
任何建议将不胜感激!
【问题讨论】:
-
与其构建两个数组,不如制作一个以术语为键、描述为值的字典?然后你可以像现在一样设置术语(
viewController.viewTerm = viewTerm),描述为viewController.viewDescription = termDict[viewTerm]。 -
@MichaelKohl - 非常感谢!我重新编写了整个部分以创建字典并使用“键、值”参数。我是(快速)开发的新手,所以需要一段时间才能实现,但效果很好!非常感谢您为我指明了正确的方向。
-
很高兴我能帮上忙 :)
标签: ios json swift segue swifty-json