iPhone應(yīng)用:Sqlite和UITableView實(shí)現(xiàn)大數(shù)據(jù)瀏覽案例
iPhone應(yīng)用中關(guān)于Sqlite和UITableView實(shí)現(xiàn)大數(shù)據(jù)瀏覽案例分析是本文要介紹的內(nèi)容,主要是來(lái)學(xué)習(xí)iphone應(yīng)用總數(shù)據(jù)處理的操作,具體內(nèi)容來(lái)看本文詳細(xì)講解。在開(kāi)始學(xué)習(xí)iPhone開(kāi)發(fā)的時(shí)候就捉摸 AppStore這樣的程序時(shí)怎么實(shí)現(xiàn)的, 動(dòng)態(tài)的從服務(wù)器抓取內(nèi)容,再在表格中顯示。
伴隨著twitter的火爆, 越來(lái)越多的軟件實(shí)現(xiàn)了此種方式來(lái)顯示twitter消息, 不巧公司也要做twitter相關(guān)的東西,正好借此機(jī)會(huì)試探著實(shí)現(xiàn)一下這種顯示功能。
iPhone應(yīng)用程序和傳統(tǒng)的桌面程序的***不同在于內(nèi)存有限, 管理內(nèi)存成了iPhone開(kāi)發(fā)中時(shí)時(shí)刻刻需要謹(jǐn)記的事情。類(lèi)似的功能在桌面程序上無(wú)非是將down下來(lái)的數(shù)據(jù)緩存于內(nèi)存中,需要的時(shí)候畫(huà)出來(lái)即可。 此法在iPhone上切不可行,雖然UITableViewCell可與reuse重復(fù)使用以節(jié)約內(nèi)存使用量, 但是數(shù)據(jù)還是需要host在array或者dictionary中,必然導(dǎo)致程序?qū)嵱么罅績(jī)?nèi)存兒崩潰退出。
還好,iPhone系統(tǒng)內(nèi)置sqlite微型數(shù)據(jù)庫(kù), 這么好的查詢(xún)插入引擎不善用那就是罪過(guò)了。
言歸正傳, 基本思路是這樣的: 從服務(wù)器讀取內(nèi)容,以twitter為例,先創(chuàng)建消息數(shù)據(jù)表
- 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后將每條消息插入數(shù)據(jù)表, 寫(xiě)入成功后發(fā)送reload消息給table以重新填充表格單元內(nèi)容, 如圖
如果消息記錄超過(guò)一條, 記得在
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中返回消息記錄 + 1, 因?yàn)?**一個(gè)cell需要實(shí)現(xiàn) Get More …功能。
就像上一步說(shuō)的, 點(diǎn)擊***一個(gè)cell也就是Get More…時(shí),在此從服務(wù)器獲取 新的timelines, 將其解析再寫(xiě)入數(shù)據(jù)表中, 每次刷新時(shí)將數(shù)據(jù)表清空,否則顯示的消息會(huì)越來(lái)越多:), Get More 工作狀態(tài)大概時(shí)這樣的,如圖:
如此, 程序?qū)嵱玫膬?nèi)存非常小, 每一條消息內(nèi)容都是在需要的時(shí)候從數(shù)據(jù)庫(kù)文件中讀取, 減小了內(nèi)存使用量就增加了程序的穩(wěn)定性, 這對(duì)于成功的軟件來(lái)說(shuō)是非常必要的。
這篇小文只是對(duì)這樣一個(gè)實(shí)現(xiàn)技術(shù)做了簡(jiǎn)單的介紹, 其中還有很多細(xì)節(jié)需要考慮, 比如:對(duì)sqlite的封裝,以便于使用; 采用NSURLConnection方式下載數(shù)據(jù)以及post數(shù)據(jù)的實(shí)現(xiàn); 還有xml解析可以使用iPhone SDK本身的NSXML* 系列API 也可以使用libxml, 具體當(dāng)然根據(jù)個(gè)人習(xí)慣來(lái)選擇。 針對(duì)Twitter, 已經(jīng)有很多很好的開(kāi)源庫(kù)可以直接使用,比如 TwitterEngine
小結(jié):iPhone應(yīng)用:Sqlite和UITableView實(shí)現(xiàn)大數(shù)據(jù)瀏覽案例分析的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!