2014-12-24 3 views
0

Мне тяжело пытаться понять это быстро. Поэтому я хочу заполнить табличный вид, в котором есть все поисковые запросы для поиска по списку, и в каждой ячейке есть имя станции, битрейт потока и теперь игра. У меня также нет большого опыта в программировании.Массив, в котором хранится словарь. Swift

"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

Вы должны более четко указать, чего вы пытаетесь достичь. Данные, которые вы отправляли, похоже, JSON, если вы пытаетесь разобрать его, быстрый Google может привести к [этой библиотеке] (https://github.com/SwiftyJSON/SwiftyJSON), если вы не знаете, что я имею в виду путем «разбора» вы должны сначала «разобрать JSON» Google. – Patru

ответ

-1

Приведенный ниже пример явно JSON. Я не могу точно понять, что именно вы спрашиваете, но я предполагаю, что вы хотите знать, как сохранить эту же структуру данных в массиве словарей.

Что вы на самом деле имеете здесь словарь словарей, но я собираюсь предположить, что клавиши на верхнем уровне - это действительно просто индексы массива. Таким образом, у вас было бы что-то вроде этого:

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

и так далее. Тем не менее, это кричит как массив из model objects.

Я также должен добавить, что если у вас есть данные уже в формате JSON, вы можете преобразовать их в словари и массивы, используя методы NSJSONSerialization. Это даст вам Objective-C NSArray и NSDictionary, которые тесно связаны с ними, но немного отличаются от их Swift-аналогов.

0

@ все остальные, даже если это json, это недействительно json.

Если бы я был вами, я бы пошел на это более шаг за шагом, как это.

  1. Выяснить, как входные данные для таблицы форматируется
  2. найти способ чтения данных
  3. найти способ поместить данные в структуру
  4. создать таблицу.
  5. Заселите таблица из состава

здесь немного примеров кода в стрижа, основанный на чтении 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 
} 
}