2015-04-14 3 views
0

Я совершенно новый для Swift. Я пытаюсь подключить его к UITableView наилучшим образом. Я решил использовать SwiftyJSON, который кажется простым. Мои объекты в объекте JSON может выглядеть следующим образом:Подключение UITableView к API JSON

{ 
    "id": "146", 
    "title": "Esports site Streak provides prize-heavy alternative to traditional betting", 
    "url": "http://www.dailydot.com/esports/streak-counter-strike-vulcun-betting/", 
    "image_url": "//cdn0.dailydot.com/cache/bb/cc/bbccc49d8271f2f3ed4c40b45c0fe0c0.jpg", 
    "date": "2015-04-10 22:07:00", 
    "news_text": "test teeeext", 
    "referer_img": "1" 
} 

До сих пор я начал с создания цикла, который создает цикл через все петли в viewDidLoad

for (key: String, subJson: JSON) in jsonArray { 

    println(subJson) 

} 

и после того, что я имею создал класс для всех новостей, как показано ниже:

class News { 
    var id: Int! 
    var title: NSString! 
    var link: NSString! 
    var imageLink: NSString! 
    var summary: NSString! 
    var date:NSString! 

    init(id: Int, title:NSString, link: NSString, imageLink:NSString, summary: NSString, date:NSString) { 
     self.id = id 
     self.title = title 
     self.link = link 
     self.imageLink = imageLink 
     self.summary = summary 
     self.date = date 
    } 
} 

Однако я не уверен, что это лучший подход для создания этого? Какими будут мои следующие шаги, чтобы подключить его к UITableView?

+0

Просто создайте массив объектов 'News', которые вы создаете из json, и используйте этот массив в качестве модели вашего' UITableView'. Таким образом, первая ячейка будет отображать первый объект массива и т. Д. – ad121

+0

мог бы сделать ответ с помощью sudo-кода или фрагмента? –

ответ

0

Это должно дать вам представление о том, что делать. Сначала вам нужно создать массив. Затем вы будете создавать и добавлять объект новостей один за другим в этот массив. Затем вы будете использовать этот массив для dataSource таблицы TableView. В вашем cellForRowAtIndexPath вы будете читать в своих новостных объектах и ​​отображать их данные.

var arrayNews = Array<News>() 
self.tableView.dataSource = self 

for (key: String, subJson: JSON) in jsonArray { 
    // Create an object and parse your JSON one by one to append it to your array 
    var newNewsObject = News() 
    id:  = // 
    title:  = // 
    link  = // 
    imageLink = // 
    summary = // 
    date  = // 
    arrayNews.append(newNewsObject) 
} 
self.tableView.reloadData() // This will read in your arrayNews array 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier("NewsCell") as! NewsCell 
    let newsObject = self.arrayNews[indexPath.row] // Assuming this is 1 section 

    // set all of your details here 
    cell.labelBlahBlah.text = something 
    return cell 
} 
+0

Хорошо, спасибо! кстати, я собираюсь пройти через 2 json-файла. один с последними новостями и один с популярными новостями. Мне нужно создать для разных классов новостей для этого или мне просто нужно создать 2 разных массива и добавить их к каждому? –

+0

Если они используют одни и те же поля, то используют один и тот же класс и создают многомерный массив для хранения разных «разделов». Array >. Затем в вашем cellForRowAtIndexPath вы расшифруете свой раздел этим массивом. self.arrayNews [раздел] [строка]. –

+0

не может присваивать значение массива типа значению типа uitableviewdatasource –

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