sqlite + UITableView 實現大資料瀏覽(連網)

來源:互聯網
上載者:User

本文系轉載自:
FLYBLOG
[
http://www.flyblog.info
]

 

在開始學習iPhone開發的時候就捉摸 AppStore這樣的程式時怎麼實現的, 動態從伺服器抓取內容,再在表格中顯示。
伴隨著twitter的火爆, 越來越多的軟體實現了此種方式來顯示twitter訊息,
不巧公司也要做twitter相關的東西,正好藉此機會試探著實現一下這種顯示功能。

iPhone程式和傳統的傳統型程式的最大不同在於記憶體有限,
管理記憶體成了iPhone開發中時時刻刻需要謹記的事情。類似的功能在傳統型程式上無非是將down下來的資料緩衝於記憶體中,需要的時候畫出來即可。
此法在iPhone上切不可行,雖然UITableViewCell可與reuse重複使用以節約記憶體使用量量,
但是資料還是需要host在array或者dictionary中,必然導致程式實用大量記憶體兒崩潰退出。

還好,iPhone系統內建sqlite微型資料庫, 這麼好的查詢插入引擎不善用那就是罪過了。。。
言歸正傳, 基本思路是這樣的: 從伺服器讀取內容,以twitter為例,先建立訊息資料表
create table public_timelines (id integer primary key autoincrement, user varchar(40),/
userurl text,body text, created real, created_string text,/
imageurl text, ordernum int, userid varchar(20), user_screenname varchar(40));

擷取public timelines得到以xml形式存在的message條目,解析xml後將每條訊息插入資料表, 寫入成功後發送reload訊息給table以重新填充表格單元內容,

如果訊息記錄超過一條, 記得在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中返回訊息記錄 + 1, 因為最後一個cell需要實現 Get More …功能

就像上一步說的, 點擊最後一個cell也就是Get More…時,在此從伺服器擷取 新的timelines, 將其解析再寫入資料表中, 每次重新整理時將資料表清空,否則顯示的訊息會越來越多:), Get More 工作狀態大概時這樣的

如此, 程式實用的記憶體非常小, 每一條訊息內容都是在需要的時候從資料庫檔案中讀取, 減小了記憶體使用量量就增加了程式的穩定性, 這對於成功的軟體來說是非常必要的。

這篇小文只是對這樣一個實現技術做了簡單的介紹, 其中還有很多細節需要考慮, 比如:對sqlite的封裝,以便於使用;
採用NSURLConnection方式下載資料以及post資料的實現; 還有xml解析可以使用iPhone SDK本身的NSXML* 系列API
也可以使用libxml, 具體當然根據個人習慣來選擇。 針對Twitter, 已經有很多很好的開源庫可以直接使用,比如
TwitterEngine

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.