我很难在迅速解决这个问题。所以我想填充一个表视图,其中包含所有站列表搜索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
}
},
答案 0 :(得分:0)
@everyone else即使这是json,它也是无效的json。
如果我是你,我会像往常一样逐步采用这种方法。
这里是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; NSArray
和NSDictionary
,它们与Swift同行密切相关,但有点不同。