存储字典的数组。迅速
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 的 NSArray
和 NSDictionary
,它们与 Swift 对应物密切相关,但又有所不同。
【讨论】:
以上是关于存储字典的数组。迅速的主要内容,如果未能解决你的问题,请参考以下文章