日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Swift下CoreData的使用

發布時間:2023/12/13 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 Swift下CoreData的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我之前的隨筆中有寫過一些iOS持久化存儲的方法,包含了sqlite、解歸檔、沙盒存放等等。這些方式中,能夠大規模存儲,并保持性能的只有使用sqlite了。而這里將記錄下Cocoa自身繼承的數據庫的存儲方案--CoreData的使用。

CoreData在底層也是直接采用了sqlite等作為數據庫的搭建。只是在上層封裝成Cocoa熟悉的方式,這樣,即使對于不熟悉其他的數據的開發者來說,也不會感到無從下手。 同時CoreData中加入了可視化地操作數據的關聯操作,為我們在Cocoa中使用CoreData提供更方便的途徑。


一、搭建CoreData環境。

搭建CoreData的環境有兩種方式。第一種在項目中搭建,這種方式比較繁瑣,需要開發者指定存儲地址、方式等。除非是在已經開發的項目中添加CoreData,不然不推薦。 第二種方式是在項目創建的時候,勾選User Core Data功能,項目創建之后,會自動創建CoreData的相關代碼。搭建成功之后,在Appdelegate文件中會看到一靜創建后的代碼。接下來在項目中,就可以使用CoreData了。

二、可視化建立項目中的實體

在項目中找到 項目名.xcdatamodeld 文件。這是可視化操作CoreData的窗口。(這個文件只有在添加了CoreData的時候才有,否則需要手動創建。)

在使用開始,這個文件是空的,我們需要添加實體,點擊圖中的窗口底部的 add entiy ,成功之后在左側一欄看到已經添加的實體。

修改名字,這里注意,實體的名字必須是大些字母開頭。

在右側欄中我們看到每個實體有三個小標題: 分別是 屬性(attribute)、關聯(relationship)、Fetched propertries(查詢對象)。

attribute

attribute類似于我們創建一個類的屬性,其實就是NSMangerModel中的屬性。 對一個NSMangerModel類中,所有需要存儲的屬性都可以放在這里。 添加方式是:點擊下方的“+”就可以添加了。attribute 能選擇的類型包括以下:

Undefined: 默認值,參與編譯會報錯
Integer 16: 整數,表示范圍 -32768 ~ 32767
Integer 32: 整數,表示范圍 -2147483648 ~ 2147483647
Integer 64: 整數,表示范圍 –9223372036854775808 ~ 9223372036854775807
Float: 小數,通過MAXFLOAT宏定義來看,最大值用科學計數法表示是 0x1.fffffep+127f
Double: 小數,小數位比Float更精確,表示范圍更大
String: 字符串,用NSString表示
Boolean: 布爾值,用NSNumber表示
Date: 時間,用NSDate表示
Binary Data: 二進制,用NSData表示
Transformable: OC對象,用id表示。可以在創建托管對象類文件后,手動改為對應的OC類名。使用的前提是,這個OC對象必須遵守并實現NSCoding協議

relationship

relationship中描述的是實體與實體之間的關系。有 多對多、多對一、一對多、一對一四種情況可選。

Fetched propertries

Fetched Properties用于定義查詢操作,和NSFetchRequest功能相同。定義fetchedProperty對象后,可以通過NSManagedObjectModel類的fetchRequestFromTemplateWithName:substitutionVariables:方法或其他相關方法獲取這個fetchedProperty對象。 個人覺得這個屬性類似saqlite中的 autoindex。可以作為實體標簽,便于查找。

三、建立實體之間的關聯

建立一個實體之后,其實就已經用來保存實體的實例化對象了。但是有不少情況我們的實體并沒有很單純,可能我們需要在實體中保存的不僅僅是屬性,而是一個個實體。這時候就需要將這一個個實體和主實體關聯起來。 在窗口底部有一排功能按鈕,最右側的按鈕可以選擇實體的展示方式。

我們將之切換到group樣式。

按住Ctrl鍵拖動實體,可以將兩個實體關聯起來。

關聯之后,將實體展示切換會 list 模式,在relationship中看到兩個實體之間的關聯,設置相對應地名字。同時在右側欄中看到一些設置。調整關聯中的一些屬性,比如刪除規則,關聯類型,等等。

創建好實體和關聯關系之后,我們就該創建這些實體的類了。選中項目名.xcdatamodeld 文件,菜單中選擇 EIdtor -> CreartNSmangerObject ,選擇保存的位置即可

最后看到創建好的實體文件。我們將這些看著跟一般的類一樣即可。 只不過,它包含了存儲到CoreData 的API。

四、 如何保存Coredata不支持的屬性

上面講到了attribute只能選擇部分類型。

如果是不支持的類型可以將之設置成Transformable,然后在項目中創建Transformable的子類,實現Transformable類型對要轉化的類型的轉換。這種方式稍稍有點繁瑣。

在這里提供一個小技巧。

在Entity+CoreDataClass文件中,我們可以自定義一些屬性。 通過設置其get和set方法,實現存儲和轉化。具體操作如下:

假如我們需要保存一張圖片大CoreData,顯然直接保存是不可能的,我們可以在實體放置一個image屬性,將其類型設置為 NSData。

再在創建的實體的文件處理如下:

五、 建議使用第三方的框架使用CoreData。

盡管蘋果公司對coreData做了很大的優化,但是使用起來還是略顯麻煩,同學們可以找一些比較好的第三方框架。比如我目前正在使用的MagicalRecord 就很不錯哦。

總結

以上是生活随笔為你收集整理的Swift下CoreData的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。