存储字典的数组。迅速

时间:2014-12-24 02:40:07

标签: arrays xcode uitableview swift dictionary

我很难在迅速解决这个问题。所以我想填充一个表视图,其中包含所有站列表搜索init,并且每个单元格中都有站名,流比特率和正在播放。我也没有很多编程经验。

 "station_list": {
        "1": {
            "number": 1,
            "sid": "6235",
            "name": "WwW Radio",
            "streams": {
                "stream_format": "9",
                "stream_format_string": ".MP3/.M3U Playlist",
                "stream_bitrate": "5",
                "stream_bitrate_string": "128 kbps",
                "now_playing": "",
                "test_up": 0
            }
        },
        "2": {
            "number": 2,
            "sid": "25755",
            "name": "EKR - Rock Radio 24/7",
            "streams": {
                "stream_format": "9",
                "stream_format_string": ".MP3/.M3U Playlist",
                "stream_bitrate": "3",
                "stream_bitrate_string": "64 kbps",
                "now_playing": "",
                "test_up": 0
            }
        },
        "3": {
            "number": 3,
            "sid": "25965",
            "name": "Classic Rock Radio",
            "streams": {
                "stream_format": "9",
                "stream_format_string": ".MP3/.M3U Playlist",
                "stream_bitrate": "4",
                "stream_bitrate_string": "96 kbps",
                "now_playing": "",
                "test_up": 0
            }
        },

2 个答案:

答案 0 :(得分:0)

@everyone else即使这是json,它也是无效的json。

如果我是你,我会像往常一样逐步采用这种方法。

  1. 弄清楚表格的输入数据是如何格式化的
  2. 找到阅读数据的方法
  3. 找到将数据放入结构的方法
  4. 创建一个表格。
  5. 从结构中填充表格
  6. 这里是swift中的一些示例代码,基于读取json然后用它填充tableview。

    读取它真的取决于你拥有的数据类型,如果json的格式与apple提供的quakes示例相同,你可以用

    快速读取它。
    readdata()
    {
    var jsonObject : AnyObject!
    var filepath = "\(tempDir)JsonFile.dat"
    var error: NSError?
    
    var datafilecheck = NSFileManager.defaultManager()
    //Check if data file exists
    if datafilecheck.fileExistsAtPath(filepath)
    {
    let jsonData: NSData = NSData(contentsOfFile: filepath, options: .DataReadingMappedIfSafe, error: nil)!
    
    //Check if json object it readable
    if let object = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as? NSDictionary {
        cou = object["main"]!.count
        println("number of items in object = \(cou)")
    
    
        for(var row=0; row < cou; row++)
        {
    
    
            // = object["main"]![row]!["Title:"]!! as String
            var number = object["main"]![row]!["number:"]!! as String
            var sid = object["main"]![row]!["sid:"]!! as String
    
            /*Read it into some type of structure or core data ect here */
    
        }
    
        MainTable.reloadData()
    }
    else {
        println("error")
    
    }
    }
    else
    {
        println("Json data file NOT JSON FILE == nil, from getdict function")
    }
    }
    

    注意:该示例具有有限的错误检查,并且还需要读入某些内容,如果您的输入中可能有错误,我建议使用预先构建的框架来读取json

    你的桌子或类似的东西也需要这两个功能。

    //Set Table view number of rows
    func numberOfRowsInTableView(tableView: NSTableView) -> Int {
        return datastruct.count
    
    }
    
    
    //Set Table view cell entries
    func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn, row: Int) -> NSView? {
    
        let identifier = tableColumn.identifier
        var cellView = tableView.makeViewWithIdentifier(identifier, owner: self) as NSTableCellView
        if (row < datastruct.count)
        {
            if identifier == "number:"
            {
    
                cellView.textField!.stringValue = datastruct[row].title
            }
    
            if identifier == "sid:"
            {
                cellView.textField!.stringValue = datastruct[row].filePath
    
            }
    
            return cellView
    }
    }
    

答案 1 :(得分:-1)

您展示的示例显然是JSON。我无法确切地理解你要问的是什么,但我的猜测是你想知道如何将这个相同的数据结构存储在一个字典数组中。

这里你实际拥有的是字典词典,但我要猜测顶层的键实际上只是数组索引。所以你有类似的东西:

[ [ "number" : 3, "sid" : "25965", "name" : "Classic Rock Radio", "streams" : [ "stream_format": "9" ] ] ]

等等。但是,这个尖叫是model objects的数组。

我还应该补充一点,如果您的数据已经是JSON格式,您可以使用NSJSONSerialization的方法将其转换为字典和数组。这将为您提供Objective-C&#39; NSArrayNSDictionary,它们与Swift同行密切相关,但有点不同。