iOS中從零開始使用protobuf

讓咱們一塊兒打開如下這個連接

在github上有protobuf-objc,當中的readme可以教會咱們安裝proto到我們電腦裏面。而後利用protoc,也就是protobuf的編譯器可以編譯.proto文件,生成一些.h和.m文件。
在移動App中。使用protobuffer可以作儲存,可以作網絡傳輸,可以幹很是多和數據打交道的事情。

最簡單的。增長作一個APP。你要記錄用戶數據對吧?用戶帳號是?password是?性別是?有沒有女友?
爲了記錄這些數據到server,就需要合適的數據結構。

有人說。爲何必定要用protobuf?爲何不用其它的如json?如xml?關於這個問題,請到stackoverflow,csdn等格調甚高的地方去尋找。去發現。。java

我要用的緣由,就是我需要用,不用就會落後,就會捱打。。ios


首先是怎麼安裝protobuf這個project。
(摘抄一段來自 https://github.com/alexeyxo/protobuf-objc的文檔)

How To Install Protobuf

Building the Objective-C Protobuf compiler

  1. Check if you have Homebrew
    brew -v
  2. If you don't already have Homebrew, then install it
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Install the main Protobuf compiler and required tools
    brew install automake
    brew install libtool
    brew install protobuf
  4. (optional) Create a symlink to your Protobuf compiler.
    ln -s /usr/local/Cellar/protobuf/2.6.1/bin/protoc /usr/local/bin
  5. Clone this repository.
    git clone https://github.com/alexeyxo/protobuf-objc.git
  6. Build it!
    ./build.sh

什麼?看不懂?不要緊,本爺就是爲了翻譯才貼上的

首先,打開終端!


brew -v

:查看你的mac裏面有沒有裝brew。brew是mac os裏面,相似於ubuntu的apt-get的功能,都可以直接在終端輸入命令而後安裝程序。-v天然就是版本號version的意思

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

這一句半懂不懂,。大概就是利用curl工具訪問那個url。而後在ruby環境下載安裝brew

brew install automake
brew install libtool
brew install protobuf

就是利用brew下載安裝了。protobuf就是咱們想要的,另外兩個是依賴庫

git clone https://github.com/alexeyxo/protobuf-objc.git
./build.sh

從github下載protobuf-objc這個project。build腳本里面作的是編譯

注意:編譯project過程當中,有可能會出現錯誤。別慌。看編譯錯誤的提示。通常錯誤僅僅是因爲環境變量和路徑沒有配置好。少了一些東西,好比少了編譯protobuf這個project的依賴庫,依照提示加入路徑就能夠

有了project之後,咱們就可以開始測試一下怎麼用protobuf了

打開Xcode!新建一個project!

而後有兩個方法把protobuf加入到你的project裏面。一個是直接加入,一個是利用cocoapod
強烈推薦後者,因爲cocoapods能夠很是方便的管理第三方類庫,之後人家的project升級了,你僅僅需要一行
pod update
就ok~duang~

關於安裝和使用cocoapod,屬於還有一個話題。看還有一個博文
在Podfile加入如下這個句子

platform :ios , 6.0
pod "ProtocolBuffers", "~> 1.9.7"

在保存以後,到終端,cd到project裏面,
pod install

等一會,cocoapod就會幫咱們加入好,之後咱們就應該打開
project的workspace,因爲加入了pod做爲子工程。


還沒結束
在你的project裏面,新建一個目錄,命名假如叫Protobuf
在這個目錄裏面新建一個proto文件。好比要在本地儲存用戶信息,那麼就新建一個user.proto
裏面內容可以例如如下
package csdnblog;

message PBUser {

required string userId = 1;                       // 用戶ID
optional string nick = 2;                         // 用戶暱稱
optional string avatar = 3;                       // 用戶頭像

optional string password = 7;
optional string email = 8;
optional string mobile = 9;                       // 手機號碼
optional string qqOpenId = 10;                    // QQ ID
optional string sinaId = 11;                      // SINA UserID
optional string weixinId = 12;                    // WeChat UserID
}

上面這個樣例包含了幾個要素。
一個是包名。包的概念在object c裏面沒有,java裏面有。c++裏面namespace也是差點兒相贊成思。

順便提一下。oc裏面通常在庫名前面加入兩個字母,起的做用差點兒相同就是包的做用,做爲類的上一層組織結構。
好比官方的NS。好比AFNetworking這樣的第三方類庫的AF。


回到正題。編寫pb文件。第二個要素是message
一個message就是一個整體,裏面有哪些必要的內容。哪些可選的內容。具體的proto語法隨便一找一大把,就不囉嗦了。

寫好了proto,接下來就是編譯這個proto文件。protobuf-objc這個類庫會編譯聲稱一些源代碼。是讀寫proto數據的接口API。
編譯命令例如如下:
先打開project,建議單獨新建一個目錄做爲輸出路徑,好比project下新建目錄Gen,用來放generate出來的.pb.h文件&&.pb.m文件
打開終端
cd到project路徑下
protoc --plugin=/usr/local/bin/protoc-gen-objc person.proto --objc_out="./Gen"

大功告成!
相關文章
相關標籤/搜索