釋放內部應用程序開發人員第 18 部分:幕後核心數據


對應用程序有想法,但缺乏開始創建應用程序的編程知識?這個每週的博客系列將引導您完成為 iPhone、iPod touch 和 iPad(不是程序員)創建應用程序的過程。加入我的每週冒險,您將體驗將想法變為現實的樂趣!這是該系列的第 18 部分。如果您剛剛開始,請在此處查看本系列的開頭。 (這篇文章已經更新到 Swift 1.2、Xcode 6.3 和 iOS 8。)

我在前幾篇文章中談到了 Core Data,但現在您了解了基礎知識。

  • 將核心數據添加到您的項目中
  • 數據模型設計實體
  • 從數據模型生成實體類
  • 如何獲取、更新和刪除實體
  • 為每個實體類創建一個業務控制器類
  • 將業務控制器與視圖控制器一起使用

本週,我們將查看幕後的核心數據,並查看在我們第一次嘗試獲取實體時自動創建的數據庫。如果您還沒有,您可以從中獲取最新項目的副本。 這個鏈接..

檢查 SQLite 數據庫

當您在模擬器中運行應用程序時,會在您的開發計算機的硬盤驅動器上創建一個包含已編譯應用程序及其相關文件的文件夾。要查看此文件夾:

  1. 啟動 Mac OS X Finder 應用程序(笑臉應用程序)。
  1. 在 Finder 菜單中,單擊 然後按住 選項 鑰匙。這將增加 圖書館 導航到圖 1 所示的文件夾列表。
圖 1-按住 選項 添加密鑰 圖書館 轉到文件夾列表。
  1. 選擇 圖書館 在 Finder 中顯示此文件夾內容的菜單文件夾。
  1. 然後深入挖掘 開發商 轉到文件夾並 CoreSimulator> 設備 文件夾。 您將看到多個具有唯一 ID 名稱的子文件夾,每個子文件夾對應安裝在 Mac 上的 iPhone 模擬器的每個版本(圖 2)。
設備文件夾
圖 2- 設備 文件夾
  1. 要獲得實際的應用程序文件,我們需要更深入地挖掘。但是,設備文件夾是搜索模擬器文件時的好方法,因此最好將此文件夾拖到 Finder 窗口左側的收藏夾欄中,以便於訪問。

我創建了一個 mmBusinessObject,以便更輕鬆地為我的應用程序找到模擬器文件。 應用程序文件目錄 當您在模擬器中運行您的應用程序時,計算的屬性會顯示您的應用程序的 SQLite 數據庫文件在 Xcode 控制台中的位置。

  1. 要查看此代碼的工作原理,請參閱 Xcode[走る ボタン。最初のシーンで、 レビューを書く、次に レビューを書く シーン、選択 アプリケーションカテゴリ次に、Xcodeコンソールを確認します(図3)。
コンソールのドキュメントディレクトリ
図3-アプリのドキュメントディレクトリがXcodeのコンソールに表示されます。
  1. このフォルダに移動するには、Finderに戻り、をクリックします 装置 最初のいくつかの手順で作成したショートカットを作成し、コンソールに表示されているフォルダに到達するまでドリルダウンします。 資料 そこにSQLiteファイルのフォルダーが表示されます(図4)。メインファイルには .sqlite 拡大。
ファイルディレクトリ
図4-SQLiteファイル

ファイルの内容を確認するには、次のセクションで説明する特別なアプリケーションが必要です。

FirefoxとSQLiteマネージャー

SQLiteデータベースを表示するために私が見つけた最高のツールの1つは、FirefoxWebブラウザー用のSQLiteManagerプラグインです。このツールを開発マシンにインストールする方法を紹介します。

  1. MacにFirefoxWebブラウザをまだインストールしていない場合は、次のリンクにアクセスしてFirefoxをダウンロードしてインストールしてください。

https://mozilla.org/firefox

  1. Firefoxをインストールした後、次のリンクにアクセスしてSQLiteManagerをダウンロードしてインストールします。

https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/

  1. FirefoxとSQLiteManagerがインストールされたので、Firefoxを起動します(Macのアプリケーションフォルダにあります)。
  1. Firefoxが正常に起動したら、Firefoxに移動します 道具 メニューを選択して選択します SQLiteマネージャー。これにより、SQLite Managerウィンドウが表示されます(図5)。
SQLiteマネージャーウィンドウ
図5-SQLiteManagerウィンドウ
  1. アプリケーションのSQLiteデータベースファイルを開くには、をクリックします データベースに接続する SQLite Managerウィンドウの上部にあるツールバーボタン(図6)。
SQLiteManagerでデータベースを開きます
図6-SQLiteManagerでデータベースを開く
  1. [SQLiteデータベースの選択]在對話框的左側,[装置 追加するフォルダ お気に入り 前のセクションで。ダイアログの右側で、ドリルダウンします 資料 シミュレーターでアプリを実行し、Xcodeコンソールに表示されるフォルダーを選択する場合 .sqlite ファイル(図7)。
SQLiteファイルを選択します
図7-選択 iAppsReview.sqlite 資料。
  1. クリック 開ける SQLiteファイルが左側のパネルに表示されます(図8)。
データベーステーブル
図8– iAppsレビュー データベーステーブル

各テーブルの機能の詳細をすべて知る必要はありません。実際、コアデータの主な目標の1つは、これらの詳細をユーザーから隠すことです。ただし、問題が発生した場合に備えて、根本的なメカニズムを基本的に理解しておくことをお勧めします。

全部で3つのテーブルがあります。 ZAPPCATEGORYENTITYZREVIEWENTITY、 と ZUSERENTITY エンティティデータモデルに追加したエンティティと同じ名前ですが、 Z プレフィックス。

  1. テーブルノードを展開すると、図9に示す列が表示されます。 Z_PK エンティティの主キー(一意の識別子)であり、 Z_ENT はエンティティID(特定のタイプのすべてのエンティティは同じエンティティIDを持ちます)であり、 Z_OPT エンティティが変更された回数を示します( 1 最初にデータベースに追加されたとき)。他のすべての列は、エンティティデータモデルに追加するエンティティのプロパティです Z プレフィックス。
データベース列
図9– iAppsレビュー テーブル列
  1. アプリケーションで何かを表示できるように、データベースにレコードを追加しましょう。

SQLite Managerの左側のパネルで、をクリックします ZAPPCATEGORYENTITY それを選択します。次に、パネルの右側で、次のことを確認します 閲覧して検索 タブを選択し、をクリックします 追加 ボタン。これにより、図10に示すダイアログが表示されます。

アプリカテゴリレコードを追加
図10-アプリケーションカテゴリレコードの追加
  1. 入る 1 中身 Z_ENTZ_OPT、 と ZCATEGORYID ボックス、および 既知の ボックスにテキストを入力 エンターテイメント 図11に示すように。
エンターテインメントカテゴリを追加
図11-追加 エンターテイメント カテゴリー
  1. クリック わかった ボタン。これにより、図12に示す確認ダイアログが表示されます。
レコード確認を追加
図12-新しいレコードの確認ダイアログ
  1. クリック わかった ボタンをクリックして、データベースに新しいレコードを追加します。これを行うと、図13に示すように、[新しいレコード]對話框再次出現,頂部有一條確認消息。如此消息中所述 取消, 退出對話框。否則,您可以添加另一條新記錄。
添加記錄
圖 13-記錄插入成功!
  1. 按添加下一條記錄 標籤 到關鍵 ZCATEGORYID 框有焦點,其內容高亮(其他值不變)。請輸入號碼 2然後製表符 知名 在框中鍵入並輸入文本 遊戲 按(刪除現有文本) 好的..在確認對話框中,按 好的 保持紀錄。
  1. 接下來,讓我們添加另一個類別記錄。標籤 ZCATEGORYID 現在在框中編號並重新輸入 3..然後標註 知名 在框中輸入文本 信息然後點擊 好的 單擊按鈕以保存新記錄。然後按 取消 退出對話框。

此時,您的數據庫中應該有三個應用程序類別記錄。

試駕應用

現在您的數據庫中有一個應用程序類別記錄,讓我們再次運行該應用程序以查看該數據在運行時的樣子。

  1. 在Xcode窗口的左上角,設置scheme如下: iPhone 6..
  1. 點擊 Xcode 按鈕。
  1. 當應用程序出現在模擬器中時,單擊 我寫評論 頂線 iApps 評論 屏幕。
  1. 點擊 應用類別 頂線 我寫評論 在該場景中,應用程序因控制台錯誤而崩潰(圖 14)。
錯誤
圖 14-核心數據錯誤!

控制台錯誤表明 Core Data 無法加載 AppCategoryEntity 類。這個怎麼樣?

之所以會出現這個錯誤,是因為它發生在實際的應用程序開發中。幸運的是,這是一個簡單的修復。

  1. 返回 Xcode 並單擊 停止 按鈕。
  1. 在項目導航器中,[iAppsReview.xcdatamodeld 資料。エンティティデータモデルの左側で、[AppCategoryEntity。Xcodeウィンドウの右側で、[データモデルインスペクター]選擇。[クラス]將“iApps Review”添加到框中。 之前(包括期間) AppCategoryEntity 名稱如圖 15 所示。
實體模塊設置
圖 15-將模塊名稱添加到實體名稱

iApps 評論 是項目的模塊名稱。 CoreData 需要此信息在運行時從 SQLite 數據庫加載實體。奇怪的是,我在從模型生成實體類時需要關閉模塊名稱,但是在運行應用程序之前我需要添加模塊名稱。這是 Apple 文檔並未真正涵蓋的“陷阱”之一,但在使用 Core Data 時,您需要了解這一點。

  1. 當您在這裡時,您需要將模塊名稱添加到實體數據模型中的其他實體。為此,請選擇每個實體,轉到 Data Model Inspector 並添加它 iApp 審查。 字首。
  1. 現在您已準備好再次嘗試運行您的應用程序。 點擊 Xcode 點擊按鈕[レビューの書き込み]去現場,[アプリカテゴリ]選擇一行,然後 您在數據庫中輸入的三個類別顯示如下: 圖 16! 像大多數人一樣,看到應用程序顯示從設備上的數據庫中檢索到的實體是非常令人興奮的。
運行時類
圖 16-運行時應用程序類別!

如果您想在表格視圖中查看更多記錄,請將以下類別行添加到數據庫中,然後在模擬器中運行應用程序以查看新記錄,就像您在上一節中所做的那樣。

ZCATEGORYID知名
生產率
搜索工具
6社交網絡
7運動型
8旅行
9天氣

結論是

至此,核心數據的添加完成。 iApps 評論 商業。在下一篇文章中,我們將擴展項目以創建和更新其他實體。它還展示瞭如何在應用程序中公開數據庫以允許用戶預填充數據庫。

>> >>