讓咱們一塊兒打開如下這個連接
在github上有protobuf-objc,當中的readme可以教會咱們安裝proto到我們電腦裏面。而後利用protoc,也就是protobuf的編譯器可以編譯.proto文件,生成一些.h和.m文件。
在移動App中。使用protobuffer可以作儲存,可以作網絡傳輸,可以幹很是多和數據打交道的事情。
最簡單的。增長作一個APP。你要記錄用戶數據對吧?用戶帳號是?password是?性別是?有沒有女友?
爲了記錄這些數據到server,就需要合適的數據結構。
有人說。爲何必定要用protobuf?爲何不用其它的如json?如xml?關於這個問題,請到stackoverflow,csdn等格調甚高的地方去尋找。去發現。。java
我要用的緣由,就是我需要用,不用就會落後,就會捱打。。ios
首先是怎麼安裝protobuf這個project。
How To Install Protobuf
Building the Objective-C Protobuf compiler
- Check if you have Homebrew
brew -v
- If you don't already have Homebrew, then install it
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Install the main Protobuf compiler and required tools
brew install automake
brew install libtool
brew install protobuf
- (optional) Create a symlink to your Protobuf compiler.
ln -s /usr/local/Cellar/protobuf/2.6.1/bin/protoc /usr/local/bin
- Clone this repository.
git clone https://github.com/alexeyxo/protobuf-objc.git
- Build it!
./build.sh
什麼?看不懂?不要緊,本爺就是爲了翻譯才貼上的
:查看你的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了
而後有兩個方法把protobuf加入到你的project裏面。一個是直接加入,一個是利用cocoapod
強烈推薦後者,因爲cocoapods能夠很是方便的管理第三方類庫,之後人家的project升級了,你僅僅需要一行
pod update
就ok~duang~
關於安裝和使用cocoapod,屬於還有一個話題。看還有一個博文
在Podfile加入如下這個句子
platform :ios , 6.0
pod "ProtocolBuffers", "~> 1.9.7"
在保存以後,到終端,cd到project裏面,
等一會,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"
大功告成!