Swift如何與資料庫進行互動?
02-06
初學者在學慣用swift做ios開發,以前沒有oc的經驗,想問一下一般情況下,在ios中的資料庫是用外部的web伺服器上的資料庫嗎?類似mysql嗎?然後我知道ios是用API與外部資料庫進行連接,那麼與外部資料庫連接用的是什麼樣的API?
這個雖然我是做安卓的 但是可以給你講個概念你可能有一些web開發的基礎吧?
在移動端,手機內部確實有資料庫,叫sqlite,但是這個資料庫一般不會存儲大量的數據內容的,只是一些小的數據存儲或者緩存數據會用到sqlite,有時候甚至在Android的Sharepreference或者是iOS的NSUserDefaults就可以做到了,比如記錄用戶應用版本號或者是用戶是否第一次登陸等小數據。
一般移動端不會直接連接web伺服器的資料庫的例如Mysql或者是SqlServer這種,移動端的開發方式主要是做API介面調用,說白了就是你的應用要什麼數據,你自己約定好,然後找服務端開發人員使用(比如我們服務端人員是做j2ee的)SpringMVC或者是Spring+Hibernate這種方式給你返回介面數據,你利用移動端的Http工具(如Android的Volley或者是Swift的Alamofire)去訪問這個介面數據的時候就會給你返回數據(一般是JSON也有XML或者直接返回字元串的形式),然後你獲取到數據後可以用例如GSON,SwiftJSON或者是DOM4J這類的工具解析後,在把獲取的數據放置到你的UI組件上並更新一下界面就可以了。資料庫的範圍很寬泛,實現方法其實是次要的,主要看使用情景進行取捨。
在ios上常用的情景一般是這兩種:
1. 存用戶數據
2. 作本地緩存和一些非網路應用第一條如果你的系統部署較大的話一般不會放在移動端。你會用一個server做數據邏輯,然後寫好api給移動端用就行了。也有小規模的app使用類似 Parse Azure 阿里雲這樣的在線雲計算服務,蘋果最近也出了一個自己的雲 CloudKit。這些雲計算服務都有自己的資料庫和api,只要學習他們的api怎麼調用就可以存取記錄啦。第二種情況就適當選用現成的解決方案了。蘋果自帶CoreData,但是他的api太難用了,因此很多第三方的資料庫 library 也應運而生。我見過某些矽谷公司會用 FMDB(Sqlite 之上的ios庫)和 Realm。總之只要是成熟的資料庫方案基本上都可以採用,就是個api喜好問題。
看樓主的問題來看應該是想做一個存用戶數據的資料庫,那麼推薦使用現成的雲計算服務。要是有閒情逸緻搭建自己的伺服器的話強烈建議把資料庫邏輯在伺服器里包裹成一個個api方便調用。移動端app其實就是一個特殊的前端而已,後端的資料庫操作不應該在任何移動端上面存在。推薦閱讀: