iOS Swift 資料持久化

2021-09-22 17:33:56 字數 3713 閱讀 8603

2> data container:

// 獲取 documents 路徑

let documentpath:string? = nssearchpathfordirectoriesindomains(.documentdirectory,

.userdomainmask,

true)

.last

let documenturl:nsurl? = nsfilemanager.defaultmanager().urlsfordirectory(.documentdirectory,

indomains: .userdomainmask)

.last

(2) library:

// 獲取 library 路徑

let librarypath:string? = nssearchpathfordirectoriesindomains(.librarydirectory,

.userdomainmask,

true)

.last

let libraryurl:nsurl? = nsfilemanager.defaultmanager().urlsfordirectory(.librarydirectory,

indomains: .userdomainmask)

.last

// 獲取 caches 路徑

let cachespath:string? = nssearchpathfordirectoriesindomains(.cachesdirectory,

.userdomainmask,

true)

.last

let cachesurl:nsurl? = nsfilemanager.defaultmanager().urlsfordirectory(.cachesdirectory,

indomains: .userdomainmask)

.last

(3) tmp:

// 獲取臨時檔案路徑

let tmppath:string = nstemporarydirectory()

2)ios 中同乙個應用在不同的手機中分配的路徑可能是不同的,所以我們無法通過硬編碼指定完整路徑名來找到對應檔案。foundation 框架提供了一組專門的介面來獲取應用沙箱不同位置的目錄路徑。

// 獲取使用者主路徑

public func nshomedirectory() -> string

// 獲取臨時檔案路徑

public func nstemporarydirectory() -> string

// 獲取滿足條件的路徑列表

public func nssearchpathfordirectoriesindomains(directory: nssearchpathdirectory,

_ domainmask: nssearchpathdomainmask,

_ expandtilde: bool) -> [string]

public class nsbundle : nsobject

應用程式 bundle 的配置資訊都存在 info.plist 檔案中。它裡面各項都以 key-value 的形式進行描述,包括了應用程式唯一標識名、版本號、可執行檔名等資訊。

bundle 配置資訊主要引數:

key友好顯示名

value

cfbundledisplayname

bundle display name

程式的應用名,安裝後顯示在桌面上的那個名稱,可以進行本地化設定

cfbundleexecutable

executable file

應用可執行程式的名稱

cfbundleidentifier

bundle identifier

應用程式的唯一標識

cfbundleversion

bundle version

應用編譯版本號

cfbundleshortversionstring

bundle version string, short

應用 release 發布版版本號

bundle 常見問題

專案裡面的某個資源檔案(比如 plist、音訊等)無法使用

獲取 nsbundle 資源

// 獲得 bundle 資訊

/**/

let mainbundle = nsbundle.mainbundle()

// 獲取 bundle 檔案路徑

let bundlepath:string = nsbundle.mainbundle().bundlepath

let resourcepath:string? = nsbundle.mainbundle().resourcepath

// 獲取 bundle url 路徑

let bundleurl:nsurl = nsbundle.mainbundle().bundleurl

let resourceurl:nsurl? = nsbundle.mainbundle().resourceurl

// 獲得 bundle 目錄下的檔案路徑

let filepath1:string = nsbundle.mainbundle().pathforresource("test", oftype: "txt")!

// bundle 下子目錄 indirectory 下的檔案路徑

let filepath2:string = nsbundle.mainbundle().pathforresource("test", oftype: "txt", indirectory: "testfolder")!

// 獲得 bundle 目錄下的 url 路徑

let fileurl1:nsurl = nsbundle.mainbundle().urlforresource("test", withextension: "txt")!

// bundle 下子目錄 subdirectory 下的 url 路徑

let fileurl2:nsurl = nsbundle.mainbundle().urlforresource("test", withextension: "txt", subdirectory: "testfolder")!

// 獲取應用程式唯一標識包名

let indentifier:string? = nsbundle.mainbundle().bundleidentifier

// 獲取應用程式 info.plist 配置項詞典物件例項

let info = nsbundle.mainbundle().infodictionary

// 獲取某一特定欄位的內容

let bundleid:anyobject? = nsbundle.mainbundle().objectforinfodictionarykey("cfbundlename")

public class nsurl : nsobject, nssecurecoding, nscopying, nsurlhandleclient

public class nsurlcomponents : nsobject, nscopying

資料持久化

資料持久化就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱.資料模型可以是任何資料結構或物件模型,儲存模型可以是關係模型 xml 二進位製流等。cmp和hibernate只是物件模型到關係模型之間轉換的不同實現。只不過物件模型和關係模型應用廣泛,所以就會誤認為資料...

資料持久化

首先是cocos2d x自己封閉的ccuserdefault跨平台的檔案儲存類,它是用的xml格式,具體操作非常類似於應用開發的ini檔案,可操作性不是很強,如果訪問比較複雜的資料,那就得自己動手去解析乙個字串,下面是示例 基本一看就懂 void userdefaulttest dotest els...

資料持久化

資料持久化是通過檔案將資料儲存在磁碟上 ios有四種資料持久化方式 1.屬性列表 property list 簡單易用,適合小資料量的儲存和查詢操作,但是不適合大量資料的儲存.屬性列表 1屬性列表 property list nsarray plist name age 指定儲存的地方 nsstri...