[Develop] IPhone APP 資料庫的基本"新刪改查"的新增功能研究筆記

  • 1286
  • 0
  • iOS
  • 2014-03-02

[Develop] IPhone APP 資料庫的基本"新刪改查"的新增功能

這一篇是參考了悅知出版的 "前進APP STORE IOS6 SDK實戰演練"一書作的Lab。我這邊把在APP裡對SQLite資料庫的基本功能再稍微簡化一下。

這邊這個Lab先做出來,理論我們後面再討論。

開發環境Xocde 4.5。

 

步驟1. 我們要新增一個完全空白的專案:

File -> New -> Project 在Application中新增一個Empty Application

螢幕快照1

在Product中輸入你的專案名稱。

螢幕快照 2013-02-14 下午11.28.05

 

步驟2. 在空白專案中新增一個Storyboard:

File -> New –> File 在User Interface中新增一個Storyboard.

螢幕快照 2013-02-14 下午11.35.25

新增完Storyboard後,要去設定這個Storyboard是這個專案的Main Storyboard。

點專案 Tragerts -> iphone/ipod Deployment info -> Main Sotry board

螢幕快照 2013-02-14 下午11.47.39

 

步驟3.加入Core Data類別參考 :

因為後續我們要使用到Core Data相關的資源,要把這個類別參考加進來。

點專案 Tragerts -> Bulid Phases -> Link Binary With Libraries 在下方的+號點兩下進入

Choose frameworks and libraries to add 參考視窗

螢幕快照 2013-02-14 下午11.42.28

 

▼在這裡加入coredata參考。

螢幕快照 2013-02-14 下午11.43.02

 

螢幕快照 2013-02-14 下午11.43.14

 

步驟4. 在Storyboard中新增四個ViewController:

我們要新增如以下畫面的ViewController。

新增1個Navigation Controller與3個ViewController。

螢幕快照 2013-02-14 下午11.51.48

 

 

▼ 在第一個ViewController上我們拉出4個Round Rect Button 按鈕到畫面上,分別幫它們命名"新增" "刪除" "修改" "查詢"。

(這四個按鈕之後我們要對應到不同的ViewController,但是這個Lab我們先做新增資料到資料庫,所以你也可以只拉出一個按鈕。)

螢幕快照 2013-02-15 上午12.00.17

 

▼在Navigation Controller下按下[Control]+滑鼠右鍵 拖拉到第一個ViewController上。

這樣在專案執行時,第一個畫面可以來到第一個View Controller。

讓使用者可以選擇要前往那個功能的頁面。

螢幕快照 2013-02-14 下午11.56.38

 

螢幕快照 2013-02-14 下午11.52.33

 

▼在第2個ViewController上新增如以下畫面。兩個TextBox與一個Button。

這個ViewController是我們要新增資料進資料庫的頁面。

螢幕快照 2013-02-15 上午12.09.18

 

▼在第一個畫面的ViewController的新增按鈕上按下[Control]+滑鼠右鍵 拖拉到第2個ViewController上,點選Push行為。

這樣當使用者按下新增按扭,畫面就會被帶到第二個ViewController。

螢幕快照 2013-02-15 上午12.05.40

 

螢幕快照 2013-02-15 上午12.06.20

 

步驟5新增Data Model :

File -> New –> File 在Core Data中新增一個Data Model。

我輸入的名稱是BookDataModel,因此新增完畢後可以看到

專案下多了一個BookDataModel.xcdatamodeld檔案。

螢幕快照 2013-02-15 上午12.16.37

 

螢幕快照 2013-02-15 上午12.11.54

 

步驟6新增一個Entity Book. :

接著要在資料模型下(Data Model)新增一個資料個體(Data Entity)。

先按下[Add Entity],新增一個名為Book的Entity。

在Entity Book裡面我們新增兩個屬性Detail與Title。這邊我們將兩個屬性都設定為String屬性。

這裡是要用來儲存前端使用者輸入的資料。

螢幕快照 2013-02-15 上午12.12.28

 

▼ Entity Book就好像一個類別,這個類別所衍生的實例(Instance),被視為一筆資料。

螢幕快照 2013-02-15 上午12.12.20

 

步驟7 新增一個NSManaged Object. :

File -> New –> New File 在Core Data中新增一個NSManagedObject subclass。

在Entity對應我們選擇我們新增的Book。

Data Model是用來與資料庫作溝通的物件。

螢幕快照 2013-02-15 上午12.16.50

 

螢幕快照 2013-02-15 上午12.19.31

 

▼ 確認後會看到專案多出了兩個檔案,分別是Book.h與Book.m。

在Book.h(這是一個Interface)中可以看到他自動幫我們宣告了Detail與Title的屬性。

然後在Book.m(這是一個Class)用@dynamic動態幫我們產生存取這些函數的方法。

(這邊就是封裝與accessor的概念)

螢幕快照 2013-02-15 上午12.19.53

 

▼ Book.h檔案內容

螢幕快照 2013-02-15 下午1.50.21

 

▼ Book.m檔案內容

螢幕快照 2013-02-15 下午1.50.33

 

步驟8. Supporting File下的 Pch檔案中加入 Import <CoreData/CoreData.h>前置詞 :

在這邊參照的表頭,可以讓整個應用程是生命周期都可以參照到這些參考。

就不用一個個類別檔案都去Import。

螢幕快照 2013-02-15 上午12.23.18

 

步驟9. 撰寫以下的程式. :

在Appdelegate.h介面檔案宣告底下的屬性與方法。

螢幕快照 2013-02-15 下午1.49.40

 

▼在Appdelegate.m 類別檔案底下實作這些屬性與方法。

這些方法的原理之後會再詳解。或是你也可以參考"前進APP STORE IOS6 SDK實戰演練"一書。

螢幕快照 2013-02-15 上午12.30.04

螢幕快照 2013-02-15 上午12.30.34

螢幕快照 2013-02-15 上午12.30.41

螢幕快照 2013-02-15 上午12.30.49

螢幕快照 2013-02-15 上午12.30.57

 

步驟10. 新增一個AddviewController類別:

這個類別繼承於UIViewController。

File -> New –> New File 在Cocoa Touch中新增一個Objective-C class。

螢幕快照 2013-02-15 上午12.33.57

螢幕快照 2013-02-15 上午12.34.11

 

▼把新增頁面的ViewController對應到Class AddviewController。

螢幕快照 2013-02-15 上午12.34.26

 

步驟11. 在Addviewcontroller.h檔案新增以下程式宣告 :

在新增頁面ViewController的2個TextBox上按下[Control]+滑鼠右鍵

拖拉到AddviewController.h檔案。新增出兩個IBoutlet UITextField宣告。

這邊我們分別將其命名為*myLabel1與*myLabel2。

這是給使用者輸入資料的區域,也是我們要將其中的資料寫入資料庫。

螢幕快照 2013-02-15 上午12.35.12

 

▼接著在畫面上的[新增]按下[Control]+滑鼠右鍵

拖拉到AddviewController.h檔案。新增出兩個IBAction的Button事件宣告。

螢幕快照 2013-02-15 上午12.35.35

 

步驟12. 在Addviewcontroller.m檔案新增以下程式實作 :

首先在表頭上Import "Book.h"與"AppDelegate"這兩個檔案

螢幕快照 2013-02-15 上午12.47.33

 

▼ 再按扭事件下宣告以下程式,要將使用者輸入在TextBox的資料寫進資料庫。

螢幕快照 2013-02-15 上午12.47.50

 

步驟.13 執行這個專案:

到此,我們可以執行這個專案了。運起好的話,Compiler後不會有任何錯誤...。

接著你可以看到模擬器出現了Iphone畫面。

在第一個畫面按下[新增]的按鈕,會來到第二個我們設計的畫面。

在Textbox畫面裡輸入資料按下新增。

螢幕快照 2013-02-15 上午12.50.06  螢幕快照 2013-02-15 上午12.50.20 螢幕快照 2013-02-15 上午12.50.35

 

▼ 可以從All Output介面看到我們在Button事件裡面撰寫的NSLog(@"準備寫資料進入資料庫")的程式被執行。

運氣好也沒有執出任何意外Exception。

螢幕快照 2013-02-15 上午12.51.11

 

步驟.14 驗證資料庫是否被建立與寫入資訊:

在程式被編譯執行後你可以在底下這個路徑找到data.sqlite的檔案

/User/使用者名稱/Library/Application\ support/iphone\ Simulator/6.0/Applications/你的專案檔案/Documents。

在終端機模式下可以找到這個Complier後的專案,然後dump出裡面的資訊。

螢幕快照 2013-02-15 上午12.27.07

 

▼可以看到這裡我們Create 一個Table "Book"以及新增了資料進入資料庫。

也可以下Select * from Zbook; 指令把內容都列印出來.

螢幕快照 2013-02-15 上午12.27.23

 

參考資源:

書籍: 前進APP STORE IOS6 SDK實戰演練

網站: An Example SQLite based iPhone Application

http://www.techotopia.com/index.php/An_Example_SQLite_based_iPhone_Application