存储字典的数组。迅速

Posted

技术标签:

【中文标题】存储字典的数组。迅速【英文标题】:An array that stores a dictionary. Swift 【发布时间】:2014-12-24 02:40:07 【问题描述】:

我很难快速解决这个问题。所以我想填充一个表格视图,其中包含所有电台列表搜索初始化,并且在每个单元格中是电台名称、流比特率和正在播放。我也没有太多编程经验。

 "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
            
        ,

【问题讨论】:

在猜测中,您可能正在超越自己。很高兴您知道您需要数组和字典。您现在还不知道如何将这些数据移动到数组和字典中,这不是很好。在开始这个项目之前,您可能想返回并了解更多基础知识。 :) 您应该更清楚地说明您要达到的目标。您发布的数据似乎是 JSON,如果您尝试解析它,快速谷歌可能会导致 this library,如果您不知道我所说的“解析”是什么意思,那么您应该先谷歌“解析 JSON”。 【参考方案1】:

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

如果我是你,我会像这样一步一步地进行。

    弄清楚表格输入数据的格式 找到读取数据的方法 找到将数据放入结构的方法 创建一个表。 从结构中填充表

这里是一些快速的示例代码,基于读取 json 然后用它填充一个 tableview。

读取它真的取决于你有什么类型的数据,如果它是与苹果提供的地震示例相同格式的json,你可以快速和肮脏地阅读它

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

您的表格或类似的东西也需要这 2 个函数。

//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


【讨论】:

【参考方案2】:

您展示的示例显然是 JSON。我不能完全理解你在问什么,但我猜你想知道如何将这个相同的数据结构存储在一个字典数组中。

您实际上拥有的是一个字典字典,但我猜测顶层的键实际上只是数组索引。所以你会有这样的东西:

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

等等。然而,这尖叫着成为model objects 的数组。

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

【讨论】:

以上是关于存储字典的数组。迅速的主要内容,如果未能解决你的问题,请参考以下文章

在 CoreData 中存储和获取字典数组

IOS_FMDB有关字典数组存储及获取问题

如何使用 Swift 将具有两个不同键的两个值存储到数组或字典中? [关闭]

字典的 plist 或存储

如何快速发布存储在 NSArray var 中的字典数组?

将数组内容正确存储到带有键的字典中