亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift利用CoreData如何存儲多種數據類的通訊錄

2020-03-09 17:43:10
字體:
來源:轉載
供稿:網友

前言

我們在上一篇文章簡單的實現了一個通訊錄,說是通訊錄實際上就只是一個簡簡單單的Name List。這次我們要往這個通訊錄里面加入更多的元素,目的也是為了學習CoreData如何存儲更多的數據類型。下面話不多說了,來隨著小編一起看看詳細的介紹吧。

完成后的效果:

swift,coredata,使用,coredata教程

1. CoreData支持存儲數據類型

swift,coredata,使用,coredata教程

咦?這里面有兩個好像很少看到的類型:Binary Data、Decimal、Transformable。這些都是神馬東西?

1.1 Binary Data

顧名思義,就是二進制數據。對應到OC中就是NSData, Swift里面就是Data數據類型。

我們這次就試試在通訊里面存儲一下圖片,把圖片變成Binary Data進行存儲。

1.2 Decimal

Decimal為SQL Server、MySql等數據庫的一種數據類型,不屬于浮點數類型,可以在定義時劃定整數部分以及小數部分的位數。使用精確小數類型不僅能夠保證數據計算更為精確,還可以節省儲存空間。

Decimal(n,m)表示數值中共有n位數,其中整數n-m位,小數m位。例:decimal(10,6),數值中共有10位數,其中整數占4位,小數占6位。

問題來了,Decimal(2,1):

1, 插入數據“12”會怎樣?

會出現數據移除的錯誤。

2, 插入”1.2345“會怎樣?

會自動四舍五入成1.2

3, 插入2,會怎樣?

會自動補充成2.0,以確保2位的有效長度和1位的小數。

1.3 Transformable

這個類型就比較搞了,有人說它是萬能類型,有人說它只要是對象就都可以。

在官方文檔里面,Core Data Release Notes for OS X v10.5 是這么介紹的:

Transformable Attributes
There's a new "transformable" type for NSManagedObject attributes that allows you more easily support attribute types that Core Data doesn't support natively. You access an attribute as a non-standard type, but behind the scenes Core Data uses an instance of NSValueTransformer to convert the attribute to and from an instance of NSData. Core Data then stores the data instance to the persistent store.

If you don't specify a transformer, transformable attributes to use keyed archiving (NSKeyedUnarchiveFromDataTransformerName).

For more details, see Non-Standard Persistent Attributes.

說到底,這是一個非標準的類型。在中文中,非典型技術宅胖其實覺得翻譯成“其他”類型更貼切。哈哈~~就和有關部門一樣d=====( ̄▽ ̄*)b厲害。

有一點點小小需要注意的地方就是,數據類型要遵守NSCoding協議。只要遵守了,就可以使用這個厲害的存儲類型了。

來來來,舉幾個栗子。Dictionary、Array、Number等等都可以呀。。。

感情是個萬金油類型?。?/p>

2. 使用CoreData存儲多種數據類的通訊錄

我們在這里計劃存儲的類型有Data、Bool、String、Date、Int64。

swift,coredata,使用,coredata教程

2.1 CoreData的基本讀取操作

2. 1.1 獲取CoreData已經保存數據的五個步驟

  • 獲取總代理和托管對象總管
  • 從Entity獲取一個fetchRequest
  • 根據fetchRequest,從managedContext中查詢數據
  • 保存。保存過程中可能會出錯,要做一下處理。
  • 添加到數組中

2.1.2 基本存儲

  • 獲取總代理和托管對象總管
  • 建立一個Entity
  • 保存內容
  • 保存Entity到托管對象。如果保存失敗,進行處理
  • 保存到數組中,更新UI

2.2 多種類型的存儲

let imgData = from.value(forKey: "avatar") as? Datalet isRelative = from.value(forKey: "isRelative") as? Boollet name = from.value(forKey: "name") as? Stringlet updateTime = from.value(forKey: "updateTime") as? Datelet viewTimes = from.value(forKey: "viewTimes") as? Int64let mobile = from.value(forKey: "mobile") as? String

來來來,就這樣輕松easy的把各種類型的都轉換好啦~ 然后就可以存入進去了吶。

3. Codable

咱們通訊錄里面通常的做法都會把一個用戶的信息全部放在一個Model里面,然后只需要把Model存儲到庫里面就好了。這個怎么做呢?

在OC時代,當需要將一個對象持久化時,需要把這個對象序列化,往常的做法是實現 NSCoding 協議。

寫過的人應該都知道實現 NSCoding 協議的代碼寫起來很痛苦,特別想哭,尤其是當屬性非常多的時候。

于是乎,Swift 4 中引入了 Codable 幫我們解決了這個問題。

struct User: Codable { var avatarImg: Data var isRelative: Bool var name: String var updateTime: Date var viewTimes: Int64 var mobile: String }

如果我們想把User 對象的實例持久化,只需要讓 User 遵守 Codable 協議即可,Language 中不用寫別的代碼。這樣就可以直接把Userencode成JSON啦。

下一篇我們就不能再用Xcode創建自帶的CoreData來搞事情了,我們要自己搞一個CoreData Stack來實現管理。

所有的源代碼都在這里:

github地址:https://github.com/Stanbai/CoreDataDemo.git

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
揄拍成人国产精品视频| 欧美疯狂xxxx大交乱88av| 伊人伊成久久人综合网站| 欧美在线激情网| 午夜精品免费视频| 国产偷亚洲偷欧美偷精品| 狠狠色香婷婷久久亚洲精品| 亚洲精品小视频在线观看| 国产欧美欧洲在线观看| 黑人极品videos精品欧美裸| 国产精品亚洲一区二区三区| 91国产精品视频在线| 国产精品自产拍在线观看| 久久99视频免费| 国产suv精品一区二区三区88区| 国产在线久久久| 欧美另类69精品久久久久9999| 亚洲国产欧美在线成人app| 尤物yw午夜国产精品视频明星| 久久av红桃一区二区小说| 欧美大胆a视频| 欧美日韩一区免费| 国产精品久久av| 成人xvideos免费视频| 亚洲欧洲第一视频| 亚洲精品视频二区| 国产成人精品久久久| 91精品视频在线免费观看| 丝袜亚洲另类欧美重口| 欧美香蕉大胸在线视频观看| 91在线看www| 亚洲人成人99网站| 成人精品久久久| 亚洲精品国产suv| 高清欧美性猛交xxxx| 日韩av在线网| 亚洲精品黄网在线观看| xx视频.9999.com| 国内精品久久久| 高潮白浆女日韩av免费看| 国产精品午夜国产小视频| 538国产精品一区二区在线| 国自在线精品视频| 国产精品无码专区在线观看| 黄色精品在线看| 国产精品偷伦视频免费观看国产| 国语对白做受69| 久久久久国产一区二区三区| 欧美色视频日本版| 亚洲的天堂在线中文字幕| 亚洲另类xxxx| 91精品成人久久| 国产亚洲视频在线| 国产亚洲精品一区二区| 欧美国产第二页| 在线视频中文亚洲| 亚洲一二在线观看| 久久亚洲精品成人| 欧美性xxxxx极品| 国产在线98福利播放视频| 性欧美长视频免费观看不卡| 国产成人精品一区二区三区| 国产噜噜噜噜噜久久久久久久久| 国产午夜精品一区二区三区| 亚洲精品福利免费在线观看| 91美女片黄在线观| 久久精品国产欧美亚洲人人爽| 国产精品黄页免费高清在线观看| 不卡毛片在线看| 91精品国产高清久久久久久91| 色无极亚洲影院| 色香阁99久久精品久久久| 中文字幕日韩精品在线| 亚洲精品网址在线观看| 黑人巨大精品欧美一区二区免费| 精品一区二区三区四区在线| 欧美精品免费在线观看| 欧美日韩中文在线| 欧美极品欧美精品欧美视频| 2018中文字幕一区二区三区| 久久久久久久久国产精品| 国产美女精彩久久| 911国产网站尤物在线观看| 一区二区中文字幕| 亚洲最大的网站| 国产97在线观看| 美日韩丰满少妇在线观看| 亚洲国产欧美一区二区三区久久| 亚洲女人被黑人巨大进入| 亚洲一区二区久久久久久| 亚洲精品国产成人| 成人在线视频网| 国产精品视频1区| 亚洲女人天堂成人av在线| 亚洲精品成人久久| 国产综合香蕉五月婷在线| 国模精品视频一区二区三区| 亚洲午夜久久久久久久| 亚洲精品一区二三区不卡| zzijzzij亚洲日本成熟少妇| 久久成人精品一区二区三区| 国产亚洲精品激情久久| 清纯唯美亚洲激情| 日韩欧美国产一区二区| 国产精品一久久香蕉国产线看观看| 91av免费观看91av精品在线| 国产精品第二页| 97精品欧美一区二区三区| 国产精品第一第二| 国产精品中文在线| 青青久久av北条麻妃海外网| 国产精品27p| 亚洲成人激情在线| 亚洲天堂av在线免费观看| 97国产精品人人爽人人做| 久久精品一本久久99精品| 久色乳综合思思在线视频| 亚洲一区二区久久久久久| 日韩精品在线观看一区二区| 成人久久久久久久| 久久亚洲精品一区二区| 亚洲人成亚洲人成在线观看| 国产精品色悠悠| 91免费精品国偷自产在线| 日韩美女视频在线观看| 久久久久久久久久久91| 亚洲成色999久久网站| 国产成人精品av在线| 色偷偷噜噜噜亚洲男人| 久久久久久18| 成人免费观看49www在线观看| 国产精品pans私拍| 亚洲第一福利视频| 亚洲欧美中文日韩在线v日本| 国产999在线| 欧美在线免费视频| 欧美麻豆久久久久久中文| 岛国视频午夜一区免费在线观看| 亚洲影视九九影院在线观看| 欧美精品做受xxx性少妇| 欧美性猛交xxxx久久久| 国产精品夫妻激情| 欧美日韩中文字幕日韩欧美| 久久久久久久久91| 亚洲福利在线视频| 亚洲午夜激情免费视频| 欧美在线视频播放| 少妇久久久久久| 激情懂色av一区av二区av| 一本色道久久综合狠狠躁篇的优点| 欧美人在线视频| 国产亚洲精品久久久久动| 久久久噜噜噜久久中文字免| 国产欧美一区二区三区在线| 一区二区三区在线播放欧美| 国产精品欧美日韩一区二区| 欧美精品制服第一页| 91免费的视频在线播放| 国产高清视频一区三区| 96pao国产成视频永久免费| 日韩性xxxx爱| 久久精品国产一区二区三区| 欧美一区二区三区四区在线| 日本高清视频精品|