iT邦幫忙

0

IOS 抓api json 資料無法在tableview 中顯示最後一筆資料(已解決)

各位先進大哥好,小弟正在寫IOS APP
目前想要的功能如下
在web api抓到的SQL資料中,只把最後一筆(最新)的資料顯示在ios cell中
目前完成的部份如下圖
api最後一筆資料樣式
https://ithelp.ithome.com.tw/upload/images/20190321/20115582yGZIDxC8V9.png

IOS tableview code 部分
https://ithelp.ithome.com.tw/upload/images/20190321/20115582SRrVTUCvJO.png

模擬器輸出
https://ithelp.ithome.com.tw/upload/images/20190321/20115582jCnWGgjUUy.png

問題如下
api共計10筆資料,有日期欄位,目前可以全部顯示在cell中,經過一番努力,已經可以只顯示最後一筆資料,但是我的程式變成前app端前9個cell都是空白的,只有cell10有值

目標是想單純tableview中只顯示最後一筆資料(一個cell)
例如:API端有一萬筆資料,我只要讓他顯示最新的一筆在我的tableview中!
感謝幫忙!!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-03-21 22:14:45
最佳解答
//改兩個地方
//1.tableview 只要一列(的空間)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 1;
}
//2.只顯示「最後一筆」的資料
- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell.xelc1vrsLabel.text = "  RS:\(elc_5mins[elc_5mins.count-1].XElc_A_Vrs) V"
cell.xelc1vstLabel.text = "  ST:\(elc_5mins[elc_5mins.count-1].XElc_A_Vst) V"
...
cell.xelc1kwhLabel.text = "  用電量 \(elc_5mins[elc_5mins.count-1].XElc_A_KWH) KWH"         
}

沒注意到你是用 swift
你就自己找對應的 method 改一下好了
整個 tableview 都可以顯示了
你一定沒問題的
/images/emoticon/emoticon13.gif

看更多先前的回應...收起先前的回應...

請問那這樣改,外面的那層if敘述要拿掉嗎?如果拿掉,會有索引值超出的問題產生!

要拿掉

cell.xelc1vrsLabel.text = "  RS:\(elc_5mins[elc_5mins.count-1].XElc_A_Vrs) V"

裡面原本的 indexPath.row 有改成 elc_5mins.count-1 嗎?
1.如果沒有,請修改
2.如果有,請確認 elc_5mins.count >= 1

或者更保險一點
外面加個 if

if (elc_5mins.count >= 1) {
   ...
}

但是這樣治標不治本(elc_5mins)就是了

非常感謝你的回覆!目前根據你的改法測試,在外層加IF敘述就可以了,但是治標不治本是什麼意思呢?

解決「索引值超出的」問題叫「治標」
解決「elc_5mins 為什麼是空的沒資料」叫「治本」
不在乎「該有資料的來源沒有資料」
只求顯示的畫面不要蛋掉
就叫「治標不治本」

我要發表回答

立即登入回答