2015-05-21 2 views
0

Я создаю приложение для iOS, которое получает данные с моего сервера с помощью json и сохраняет его на виде таблицы; с этим никаких проблем, мои данные - простые заметки, некоторые заметки связаны вместе с формированием проектов (простая зависимость от моей базы данных sql), мой вопрос: как я могу группировать свои заметки по проекту, например, список контактов? (. Ех http://img.wonderhowto.com/img/13/66/63535060544981/0/siri-exploit-you-could-bypass-iphones-lock-screen-call-message-any-contact-ios-7-1-1.w654.jpg)Данные группы JSON в Tableview с Swift

Это источник, заполнить таблицу со всеми примечаниями:

// 
// TableController.swift 
// uitableview_load_data_from_json 

import UIKit 

class TableController: UITableViewController { 

var TableData:Array<String> = Array <String>() 
var userid = NSUserDefaults.standardUserDefaults().stringForKey("userid")! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    get_data_from_url("http:/localhost/index.php/iOS_getNomenTasks?n=" + userid) 
} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return TableData.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell 
    cell.textLabel?.text = TableData[indexPath.row] 
    return cell 
} 


func get_data_from_url(url:String) 
{ 
    let httpMethod = "GET" 
    let timeout = 15 
    let url = NSURL(string: url) 
    let urlRequest = NSMutableURLRequest(URL: url!, 
     cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, 
     timeoutInterval: 15.0) 
    let queue = NSOperationQueue() 
    NSURLConnection.sendAsynchronousRequest(
     urlRequest, 
     queue: queue, 
     completionHandler: {(response: NSURLResponse!, 
      data: NSData!, 
      error: NSError!) in 
      if data.length > 0 && error == nil{ 
       let json = NSString(data: data, encoding: NSASCIIStringEncoding) 
       self.extract_json(json!) 
      }else if data.length == 0 && error == nil{ 
       println("Nothing was downloaded") 
      } else if error != nil{ 
       println("Error happened = \(error)") 
      } 
     } 
    ) 
} 

func extract_json(data:NSString) 
{ 
    var parseError: NSError? 
    let jsonData:NSData = data.dataUsingEncoding(NSASCIIStringEncoding)! 
    let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &parseError) 
    if (parseError == nil) 
    { 
     if let task_list = json as? NSArray 
     { 
      for (var i = 0; i < task_list.count ; i++) 
      { 
       if let tasj_obj = task_list[i] as? NSDictionary 
       { 
        if let task_id = tasj_obj["id"] as? String 
        { 
         if let task_name = tasj_obj["tk_title"] as? String 
         { 
          if let task_type = tasj_obj["tk_type"] as? String 
          { 
           TableData.append(task_name) 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
    do_table_refresh(); 
} 


func do_table_refresh() 
{ 
    dispatch_async(dispatch_get_main_queue(), { 
     self.tableView.reloadData() 
     return 
    }) 
} 
} 

нормально .. TASK_ID это примечание идентификатор, task_name этого названия ноты, task_type этого значения которые определяют, является ли примечание проектом или нет, если task_type равно 0, примечание является простой записью, если task_type равен 1, примечание представляет собой проект.

+1

Вы можете сгруппировать несколько ячеек Tableview внутри секций Tableview: определить количество групп в numberOfSectionsInTableView и выделить разделы в cellForRowAtIndexPath с indexPath.section – matthias

ответ

1

Если вы создаете UITableViewController, у вас есть функция:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int 

с ним, у вас есть 3 секции, которые содержат 2 строки:

var tab: [String] = ["section 1", "section 2", "section 3"] 

var tabData: [AnyObject] = [["item1", "item2"],["item1", "item2"],["item1", "item2"]] 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return tab.count 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.dataTab[section].count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell: UITableViewCell = UITableViewCell() 
    return cell 
} 
+0

Спасибо, но мои данные находятся в JSON, мне нужно разбить его на 2 части? 1 для проектов и 1 для заметок? –

+0

Вы хотите отобразить одну пару (проект, заметку) в каждой ячейке? – Betcha

+0

Нет, я хочу этого http://img.wonderhowto.com/img/13/66/63535060544981/0/siri-exploit-you-could-bypass-iphones-lock-screen-call-message-any-contact-ios -7-1-1.w654.jpg, когда A, B, C, D ecc .. являются названиями проекта –

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