При реализации табличного представления вы реализуете различные методы UITableViewDataSource
(и UITableViewDelegate
) для заполнения табличного представления. Обычно методы источника данных основывают свои ответы на некоторой имеющейся у вас структуре данных.
Так что да, вы должны создать массив, содержащий данные, которые вы хотите отобразить в таблице, чтобы методы источника данных могли получить доступ к этим данным.
Если табличное представление может быть отсортировано и / или отфильтровано, или если его можно искать, то вы хотите отдельный массив из ваших исходных данных. Вы строите новый массив из исходных данных, основываясь на том, как данные должны быть отсортированы и / или отфильтрованы. Это сохраняет исходные данные нетронутыми и позволяет методам источника данных получать доступ только к тем данным, которые необходимо отобразить.
Вы могли бы рассмотреть высказывание
{"[1,2]": [(2,3),(1,7)]}
и затем когда необходимо вывести значение, можно просто проанализировать сами ключи, поскольку JSON возражает, который все современные браузеры могут сделать со встроенным JSON.parse
метод (я использую jQuery.each
для итерации здесь, но Вы могли использовать что-либо):
var myjson = JSON.parse('{"[1,2]": [[2,3],[1,7]]}');
$.each(myjson, function(keystr,val){
var key = JSON.parse(keystr);
// do something with key and val
});
С другой стороны, Вы могли бы хотеть, просто структурируют Ваш объект по-другому, например.
{1: {2: [(2,3),(1,7)]}}
так, чтобы вместо высказывания
myjson[1,2] // doesn't work
который является недопустимым синтаксисом JavaScript, Вы могли сказать
myjson[1][2] // returns [[2,3],[1,7]]
Если Ваши ключевые кортежи являются действительно целочисленными парами, то самое легкое и вероятно большая часть простого подхода состояла бы в том, как Вы предполагаете.... кодируют их к строке. Можно сделать это в остроте:
>>> simplejson.dumps(dict([("%d,%d" % k, v) for k, v in d.items()]))
'{"1,2": [[2, 3], [1, 7]]}'
Это получило бы Вас структура данных JavaScript, ключи которой Вы могли затем разделить для возвращения точек снова:
'1,2'.split(',')
Моя рекомендация была бы:
{ "1": [
{ "2": [[2,3],[1,7]] }
]
}
Это все еще анализирует, но в зависимости от того, как Вы используете его, это может быть легче в этой форме.
Вы не можете использовать массив в качестве ключа в JSON. Лучшее, которое можно сделать, кодируют его. Извините, но нет действительно никакого другого нормального способа сделать это.
Это могла просто быть двумерная матрица? Затем можно использовать целые числа в качестве ключей