iOS中從零開始使用protobuf

來源:互聯網
上載者:User

iOS中從零開始使用protobuf
 
在github上有protobuf-objc,其中的readme可以教會我們安裝proto到咱們電腦裡面。然後利用protoc,也就是protobuf的編譯器可以編譯.proto檔案,產生一些.h和.m檔案。 在移動App中,使用protobuffer可以做儲存,可以做網路傳輸,可以幹很多和資料打交道的事情。 最簡單的,加入做一個APP,你要記錄使用者資料對吧?使用者帳號是?密碼是?性別是?有沒有女朋友? 為了記錄這些資料到伺服器,就需要合適的資料結構。有人說,為什麼一定要用protobuf?為什麼不用其他的如json?如xml?關於這個問題,請到stackoverflow,csdn等格調甚高的地方去尋找,去發現。。我要用的原因,就是我需要用,不用就會落後,就會挨打。。
首先是怎麼安裝protobuf這個工程。 (摘抄一段來自https://github.com/alexeyxo/protobuf-objc的文檔)How To Install ProtobufBuilding 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 automakebrew install libtoolbrew install protobuf

    就是利用brew下載安裝了。protobuf就是我們想要的,另外兩個是依賴庫
    git clone https://github.com/alexeyxo/protobuf-objc.git
    ./build.sh

    從github下載protobuf-objc這個工程,build指令碼裡面做的是編譯
    注意:編譯工程過程中,有可能會出現錯誤。別慌!看編譯錯誤的提示。一般錯誤只是因為環境變數和路徑沒有配置好,少了一些東西,例如少了編譯protobuf這個工程的依賴庫,按照提示添加路徑即可
    有了工程以後,我們就可以開始測試一下怎麼用protobuf了
    開啟Xcode!建立一個工程! 然後有兩個方法把protobuf添加到你的工程裡面,一個是直接添加,一個是利用cocoapod 強烈推薦後者,因為cocoapods能夠很方便的管理第三方類庫,以後人家的工程升級了,你只需要一行 pod update 就ok~duang~
    關於安裝和使用cocoapod,屬於另一個話題,看另一個博文 在Podfile添加下面這個句子
    platform :ios , 6.0pod ProtocolBuffers, ~> 1.9.7

    在儲存之後,到終端,cd到工程裡面,
    pod install

    等一會,cocoapod就會幫我們添加好,以後我們就應該開啟 project的workspace,因為添加了pod作為子工程。
    還沒結束 在你的工程裡面,建立一個檔案夾,命名假如叫Protobuf 在這個檔案夾裡面建立一個proto檔案。例如要在本地儲存使用者資訊,那麼就建立一個user.proto 裡面內容可以如下
    package csdnblog;message PBUser {required string userId = 1;                       // 使用者IDoptional string nick = 2;                         // 使用者暱稱optional string avatar = 3;                       // 帳戶圖片optional string password = 7;optional string email = 8;optional string mobile = 9;                       // 手機號碼optional string qqOpenId = 10;                    // QQ IDoptional string sinaId = 11;                      // SINA UserIDoptional string weixinId = 12;                    // WeChat UserID}

    上面這個例子包括了幾個要素。 一個是包名。包的概念在object c裡面沒有,java裡面有,c++裡面namespace也是差不多意思。 順便提一下,oc裡面一般在庫名前面添加兩個字母,起的作用差不多就是包的作用,作為類的上一層組織圖。 例如官方的NS,例如AFNetworking這種第三方類庫的AF。
    回到正題。編寫pb檔案,第二個要素是message 一個message就是一個整體,裡面有哪些必要的內容,哪些可選的內容。詳細的proto文法隨便一找一大把,就不囉嗦了。
    寫好了proto,接下來就是編譯這個proto檔案,protobuf-objc這個類庫會編譯聲稱一些源碼,是讀寫proto資料的介面API。 編譯命令如下: 先開啟工程,建議單獨建立一個檔案夾作為輸出路徑,例如工程下建立檔案夾Gen,用來放generate出來的.pb.h檔案&&.pb.m檔案 開啟終端 cd到工程路徑下
    protoc --plugin=/usr/local/bin/protoc-gen-objc person.proto --objc_out=./Gen
     
     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.