ios - List separate IP addresses on different lines -


i have app retrieves ipv4 , ipv6 addresses , of now, addresses run in uitableview. how list them on different lines? below code.

import uikit import foundation  class viewcontroller: uiviewcontroller, uitableviewdelegate, uitableviewdatasource{      @iboutlet weak var tableview: uitableview!      func getifaddresses() -> [string] {         var addresses = [string]()          // list of interfaces on local machine:         var ifaddr : unsafemutablepointer<ifaddrs> = nil         if getifaddrs(&ifaddr) == 0 {              // each interface ...             (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {                 let flags = int32(ptr.memory.ifa_flags)                 var addr = ptr.memory.ifa_addr.memory                  // check running ipv4, ipv6 interfaces. skip loopback interface.                 if (flags & (iff_up|iff_running|iff_loopback)) == (iff_up|iff_running) {                     if addr.sa_family == uint8(af_inet) || addr.sa_family == uint8(af_inet6) {                          // convert interface address human readable string:                         var hostname = [cchar](count: int(ni_maxhost), repeatedvalue: 0)                         if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),                             nil, socklen_t(0), ni_numerichost) == 0) {                                 if let address = string.fromcstring(hostname) {                                     addresses.append(address)                                  }                         }                     }                 }             }             freeifaddrs(ifaddr)         }          return addresses      }       func numberofsectionsintableview(tableview: uitableview) -> int {         return 1     }      func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int {         return 1     }      func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell {         var cell = uitableviewcell()         cell.textlabel?.linebreakmode = nslinebreakmode.bywordwrapping         cell.textlabel?.numberoflines = 0         cell.textlabel?.text = self.getifaddresses()[indexpath.row]         cell.textlabel?.text = getifaddresses().description         return cell     } 

with

func numberofsectionsintableview(tableview: uitableview) -> int {     return 1 }  func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int {     return 1 } 

you have defined table view has 1 section 1 single row, ,

cell.textlabel?.text = getifaddresses().description 

puts entire array (as string) text label of single row.

what should call getifaddresses() once , save result in property:

var addresses : [string] = []  override func viewdidload() {     super.viewdidload()     addresses = getifaddresses() } 

then define table view 1 section , many rows have addresses:

func numberofsectionsintableview(tableview: uitableview) -> int {     return 1 }  func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int {     return  addresses.count } 

finally, fill each row corresponding address array:

func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell {      let cell = uitableviewcell()     // or better (requires have prototype cell registered):     // let cell = self.tableview.dequeuereusablecellwithidentifier("cell", forindexpath: indexpath) as! uitableviewcell     cell.textlabel?.text = addresses[indexpath.row]     return cell } 

Comments