真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開(kāi)發(fā)數(shù)據(jù)持久化,iOS 數(shù)據(jù)持久化

ios數(shù)據(jù)的持久化存儲(chǔ)方式有哪些

對(duì)于數(shù)據(jù)的持久化存儲(chǔ),ios中一般提供了4種不同的機(jī)制。

創(chuàng)新互聯(lián)專(zhuān)注于中大型企業(yè)的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)和網(wǎng)站改版、網(wǎng)站營(yíng)銷(xiāo)服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶(hù)超過(guò)千家,服務(wù)滿(mǎn)意度達(dá)97%。幫助廣大客戶(hù)順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專(zhuān)注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶(hù)一起成長(zhǎng)!

1.屬性列表

2.對(duì)象歸檔

3.數(shù)據(jù)庫(kù)存儲(chǔ)(SQLite3)

4.蘋(píng)果公司提供的持久性工具Core

Data。

其實(shí)儲(chǔ)存的形式無(wú)非就這么幾種,而我們還必須要關(guān)心的是,這些文件會(huì)被放置在那個(gè)文件下,然后如何讀取。

也就是說(shuō):IOS上數(shù)據(jù)存儲(chǔ),我們要了解的兩點(diǎn),數(shù)據(jù)存儲(chǔ)格式(也就是存儲(chǔ)機(jī)制),數(shù)據(jù)存儲(chǔ)位置。

1》文件如何存儲(chǔ)(如上面4點(diǎn))

2》文件存儲(chǔ)在哪里。

對(duì)于數(shù)據(jù)的操作,其實(shí)我們關(guān)心的是操作的速率。

就好比在Adnroid中偏好存儲(chǔ),數(shù)據(jù)庫(kù)存儲(chǔ),io存儲(chǔ)一樣。

iOS 開(kāi)發(fā)如果涉及數(shù)據(jù)和表的持久化,Core Data 比 SQLite 更好嗎

首先,coredata和sqlite的概念不同,core為對(duì)象周期管理,而sqlite為dbms。

下面的討論以使用core data來(lái)做數(shù)據(jù)持久化并使用sqlite做backend存儲(chǔ)的情況為前提。

使用方便性。實(shí)際上,一個(gè)成熟的工程中一定是對(duì)數(shù)據(jù)持久化進(jìn)行了封裝的,因此底層使用的到底是core data還是sqlite,不應(yīng)該被業(yè)務(wù)邏輯開(kāi)發(fā)者關(guān)心。因此,即使習(xí)慣寫(xiě)SQL查詢(xún)的人,也應(yīng)該避免在業(yè)務(wù)邏輯中直接編寫(xiě)SQL語(yǔ)句。

存儲(chǔ)性能,在寫(xiě)入性能上,因?yàn)槎际鞘褂玫膕qlite格式作為磁盤(pán)存儲(chǔ)格式,因此其性能是一樣的,如果你覺(jué)得用core data寫(xiě)的慢,很可能是你用sqlite的時(shí)候?qū)懙拿織l數(shù)據(jù)的內(nèi)容沒(méi)有core data時(shí)多,或者是你批量寫(xiě)入的時(shí)候每寫(xiě)入一條就調(diào)用了一次save。

查詢(xún)性能,core data因?yàn)橐嫒荻喾N后端格式,因此查詢(xún)時(shí),其可用的語(yǔ)句比直接使用sqlite少,因此有些fetch實(shí)際上不是在sqlite中執(zhí)行的。但這樣未必會(huì)降低查詢(xún)效率。因?yàn)閕Phone的flash memory速度還是很快的。我的經(jīng)驗(yàn)是大部分時(shí)候,在內(nèi)存不是很緊張時(shí),直接fetch一個(gè)entity的所有數(shù)據(jù)然后在內(nèi)存中做filter往往比使用predicate在fetch時(shí)過(guò)濾更快。如果你覺(jué)的查詢(xún)慢,很可能是查詢(xún)方式有問(wèn)題,可以把core data的debug模式打開(kāi),看一下到底執(zhí)行了多少SQL語(yǔ)句,相信其中大部分是可以通過(guò)改寫(xiě)core data的調(diào)用方式避免的。

core data的一個(gè)比較大的痛點(diǎn)是多人合作開(kāi)發(fā)的時(shí)候,管理coredata的模型需要很小心,尤其是合并的時(shí)候,他的data model是XML格式的,手動(dòng)resolve比較煩心。

core data還有其他sql所不具備的優(yōu)點(diǎn),比如對(duì)undo的支持,多個(gè)context實(shí)現(xiàn)sketchbook類(lèi)似的功能。為ManagedObject優(yōu)化的row cash等。

另外core data是支持多線程的,但需要thread confinement的方式實(shí)現(xiàn),使用了多線程之后可以最大化的防止阻塞主線程

ios開(kāi)發(fā)中數(shù)據(jù)持久化有哪幾種,分別什么時(shí)間使用

1、plist文件(屬性列表),通常用于儲(chǔ)存用戶(hù)設(shè)置,也可以用于存儲(chǔ)捆綁的信息;

2、preference(偏好設(shè)置),常用于保存少量數(shù)據(jù);

3、NSKeyedArchiver(歸檔),將內(nèi)存中的對(duì)象實(shí)例保存成binary到磁盤(pán)并且可以逆向這個(gè)過(guò)程用來(lái)保存用戶(hù)操作狀態(tài)等;

4、SQLite 3,使用數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ);

5、CoreData,它提供了對(duì)象-關(guān)系映射(ORM)的功能,即能夠?qū)C對(duì)象轉(zhuǎn)化成數(shù)據(jù),保存在SQLite數(shù)據(jù)庫(kù)文件中,也能夠?qū)⒈4嬖跀?shù)據(jù)庫(kù)中的數(shù)據(jù)還原成OC對(duì)象。

iOS中常用的幾種持久化存儲(chǔ)

1、偏好設(shè)置(NSUserDefaults)

2、plist文件存儲(chǔ)

3、歸檔

4、SQLite

5、Core Data

我們首先需要了解下沙盒(Sandbox)

Application :存放程序源文件,上架前經(jīng)過(guò)數(shù)字簽名,上架后不可修改

Documents : 保存應(yīng)?運(yùn)行時(shí)生成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時(shí)會(huì)備份該目錄。例如,游戲應(yīng)用可將游戲存檔保存在該目錄

tmp : 保存應(yīng)?運(yùn)行時(shí)所需的臨時(shí)數(shù)據(jù),使?完畢后再將相應(yīng)的文件從該目錄刪除。應(yīng)用 沒(méi)有運(yùn)行時(shí),系統(tǒng)也可能會(huì)清除該目錄下的文件。iTunes同步設(shè)備時(shí)不會(huì)備份該目錄。

Library/Caches : 保存應(yīng)用運(yùn)行時(shí)?成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時(shí)不會(huì)備份 該目錄。?一般存儲(chǔ)體積大、不需要備份的非重要數(shù)據(jù),比如網(wǎng)絡(luò)數(shù)據(jù)緩存存儲(chǔ)到Caches下

Library/Preference : 保存應(yīng)用的所有偏好設(shè)置,如iOS的Settings(設(shè)置) 應(yīng)?會(huì)在該目錄中查找應(yīng)?的設(shè)置信息。iTunes同步設(shè)備時(shí)會(huì)備份該目錄

NSUserDefaults是個(gè)單例類(lèi),用于存儲(chǔ)少量數(shù)據(jù)。NSUserDefaults實(shí)際上對(duì)plist文件操作的封裝,更方便我們直接操作,一般用于存儲(chǔ)系統(tǒng)級(jí)別的偏好設(shè)置。比如我們經(jīng)常將登錄后的用戶(hù)的一些設(shè)置通過(guò)NSUserDefaults存儲(chǔ)到plist文件中。

NSUserDefaults使用起來(lái)非常簡(jiǎn)單,例如將用戶(hù)的賬號(hào)和密碼存儲(chǔ)起來(lái):

ios數(shù)據(jù)持久化 - preference(偏好設(shè)置)

1.plist文件(屬性列表)

2.preference(偏好設(shè)置)

3.NSKeyedArchiver(歸檔)

4.SQLite 3

5.CoreData

偏好設(shè)置是專(zhuān)門(mén)用來(lái)保存應(yīng)用程序的配置信息的,一般不要在偏好設(shè)置中保存其他數(shù)據(jù)。

如果沒(méi)有調(diào)用synchronize方法,系統(tǒng)會(huì)根據(jù)I/O情況不定時(shí)刻地保存到文件中。所以如果需要立即寫(xiě)入文件的就必須調(diào)用synchronize方法。

偏好設(shè)置會(huì)將所有數(shù)據(jù)保存到同一個(gè)文件中。即preference目錄下的一個(gè)以此應(yīng)用包名來(lái)命名的plist文件。

NSUserDefaults適合存儲(chǔ)輕量級(jí)的本地?cái)?shù)據(jù),如登陸界面的數(shù)據(jù),用戶(hù)名、密碼等用戶(hù)偏好設(shè)置類(lèi)的數(shù)據(jù)。下次啟動(dòng)應(yīng)用的時(shí)候就可以直接從NSUserDefaults里面讀取上次運(yùn)行的數(shù)據(jù)。

如果使用自己建立的plist文件什么的,需要自己顯式創(chuàng)建文件,讀取文件,很麻煩,而如果用NSUserDefaults則不用管這些,就像讀字典一樣,直接讀取數(shù)據(jù)就可以了,同時(shí)NSUserDefaults有緩存機(jī)制,可以避免頻繁讀寫(xiě)文件。

NSUserDefaults支持的數(shù)據(jù)格式有:NSNumber(BOOL、Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,NSData類(lèi)型。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

//添加preference

[defaults setObject:@"value1" forKey:@"key1"];

[defaults setObject:@1111 forKey:@"key2"];

[defaults synchronize];

//刪除preference

[defaults removeObjectForKey:@"key1"];

[defaults synchronize];

//修改preference

[defaults setObject:@"value2" forKey:@"key1"];

[defaults synchronize];

//刪除所有preference

NSString *appDomainStr = [[NSBundle mainBundle] bundleIdentifier];

[defaults removePersistentDomainForName:appDomainStr];

NSString *key1Value = [defaults objectForKey:@"key1"];

NSNumber *key2Value = [defaults objectForKey:@"key2"];

NSLog(@"偏好設(shè)置=%@=%@",key1Value,key2Value);

ios 開(kāi)發(fā)中可以使用json作數(shù)據(jù)持久化嗎》

iOS數(shù)據(jù)持久化一般采用下面方式

1、NSUserDefaults

2、數(shù)據(jù)歸檔。

3、SQLite3

4、Core Data

5、文件

如果你的json數(shù)據(jù)量不大的話可以使用NSUserDefaults、文件存儲(chǔ)。數(shù)據(jù)量大就需要使用數(shù)據(jù)庫(kù)存儲(chǔ)。


網(wǎng)頁(yè)名稱(chēng):ios開(kāi)發(fā)數(shù)據(jù)持久化,iOS 數(shù)據(jù)持久化
分享鏈接:http://weahome.cn/article/dsdjpie.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部