2014-12-22 8 views
0

JSON:Как получить доступ к данным в массиве в JSON

{ 
"projects":[ 
{ 
"id":113, 
"name":"Mobile app Android", 
"description":"", 
"created_on":"2014-10-03T16:53:56+02:00", 
"updated_on":"2014-12-03T16:59:45+01:00" 
}, 
{ 
"id":142, 
"name":"Mobile app iOS", 
"created_on":"2014-12-11T18:30:55+01:00", 
"updated_on":"2014-12-11T18:30:55+01:00" 
}, 
{ 
"id":52, 
"name":"Test project", 
"identifier":"grafikr", 
"description":"", 
"created_on":"2013-10-14T17:21:33+02:00", 
"updated_on":"2014-10-10T17:40:47+02:00" 
}, 
{ 
"id":37, 
"name":"Sample project", 
"identifier":"grafikf", 
"description":"", 
"created_on":"2013-09-18T16:31:25+02:00", 
"updated_on":"2013-09-26T13:11:58+02:00" 
} 
], 
"total_count":4, 
"offset":0, 
"limit":25 
} 

Легко доступ, например, имя первого проекта (с именем Mobile приложения Android) по имени вара = JSON [ «проекты»] [0] ["name"]. StringValue

Но как мне получить доступ ко всем именам в SwiftyJSON? Если я делаю переменная вар проектов = [ «JSON проектов»], это дает мне:

[ 
    { 
    "id" : 113, 
    "created_on" : "2014-10-03T16:53:56+02:00", 
    "name" : "Mobile app Android", 
    "description" : "", 
    "updated_on" : "2014-12-03T16:59:45+01:00" 
    }, 
... 

Теперь у меня нет проблем с сделать NSDictionary из данных больше, но это сводит меня с ума.

+0

Вам не нужно подавать с 'как' подобное. 'ID' уже является строкой. – mattt

+0

Кроме того, стилистическим соглашением было бы использовать переменные camelCased, а не UPPERCASE или snake_case. Для 'init', попробуйте использовать' self.id = id', а не 'id = ID'. – mattt

+0

Еще одна вещь - вероятно, это «Проект» (единственное, а не множественное число). Для работы с несколькими проектами за один раз используйте массив проектов ('[Project]'). – mattt

ответ

0

В вашем примере кода много чего происходит - возможно, слишком много для решения одного вопроса/ответа на переполнение стека.

Я настоятельно рекомендую вернуться к ресурсам Apple для шаблонов приложений Swift и iOS. Темы для повторного просмотра будут включать синхронное и асинхронное программирование, аутентификацию и использование источников данных с табличными представлениями.

+0

Я изменил свой ответ, пожалуйста, посмотрите на эти изменения. – Kotora

0

Возможно, это работает. Ваш json также содержит «total_count», который смотрит на него, я предполагаю, что это количество количества проектов. Потяните, чтобы подсчитать, перейдите к графу и введите имя.

var names = [String]() 
let count = json["total_count"].int 
for index in 0..<count { 
     let name = json["projects"][index]["name"].string 
     names.append(name) 
} 
0

Почему бы не использовать SwiftyJSON в Swifty путь ???

Попробуйте это:

let names = json["projects"].arrayValue.map { 
    $0["name"].stringValue 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^