当前位置: 首页 > news >正文

效果好企业营销型网站建设南昌p2p网站专业建设

效果好企业营销型网站建设,南昌p2p网站专业建设,wordpress相册短代码,怎么建立自己企业网站快速上手 iOS Protocol Buffer | 来自缤纷多彩的灰 本文主要介绍在 iOS 开发中如何快速上手使用 Protobuf。更多关于 Protobuf 的介绍和相关的功能 api,读者可自行查阅官网。 Protocol Buffer(简称 Protobuf)是一种由Google开发的语言中立、…

快速上手 iOS Protocol Buffer | 来自缤纷多彩的灰

本文主要介绍在 iOS 开发中如何快速上手使用 Protobuf。更多关于 Protobuf 的介绍和相关的功能 api,读者可自行查阅官网。

Protocol Buffer(简称 Protobuf)是一种由Google开发的语言中立、平台无关的序列化数据结构的方法。它允许你定义结构化的数据,并提供一种高效且灵活的方式进行数据序列化和反序列化。

安装 Protobuf 工具

最简单的方式是直接通过 brew 进行安装:

brew install protobuf           // 支持生成.h和.m文件,和其他多种语言的文件
brew install swift-protobuf     // 支持生成.swift文件

检查是否安装成功:

protoc --version

protoc-gen-swift --version

创建 .proto 文件

// 使用V3语法

syntax = "proto3"

// OC语言可选,添加模型文件前缀

option objc_class_prefix = "MY"

// message代表一个模型

message Test {

    string title = 1;

    int32 tag = 2;

    Request request = 3;        // 自定义的 Request 类型

    repeated string values = 4; // 数组

}

message Request {

    string url = 1;

}

OC、Swift 代码生成

Protobuf 提供api用于根据.proto文件生成代码,需传入两个参数,生成结果与参数的传入顺序无关:

  1. .proto 文件的路径(下文中用 source_path 表示)
  2. 需要生成的目标语言(下文用 target_language 表示)以及文件的输出路径(下文用 target_path 表示)

protoc source_path/xxx.proto --target_language_out=target_path
 

protoc --objc_out=. xxx.proto      // 在当前文件夹根据xxx.proto生成.h和.m文件

protoc xxx.proto --swift_out=.     // 在当前文件夹根据xxx.proto生成.swift文件

在 iOS 工程中的使用

1.工程添加依赖

pod 'Protobuf'          // OC和其他多种语言的能力依赖

pod 'SwiftProtobuf'     // swift能力依赖

2.把转换后的代码文件加入到工程。

3.跟正常使用某个类的方法一样。

/*{"title": "test","tag": 1,"request": {"url": "www.fivehow.com"},"values": ["value1", "value2"]}*/let request = Request.with { $0.url = "www.whlcj.github.io" }
// ProtoBuf data
let test = Test.with {$0.title = "test"$0.tag = 1$0.request = request$0.values = ["value1", "value2"]
}
let binaryData = try? test.serializedData()
guard let binaryData = binaryData else { return }
_ = try? Test(serializedData: binaryData)
// Json Data
let jsonStr = "{\"title\":\"test\", \"tag\":1, \"request\":{\"url\":\"www.whlcj.github.io\"},\"values\":[\"value1\", \"value2\"]}"let jsonStrData = jsonStr.data(using: .utf8)// 对比 data length
print("binaryData: \(binaryData.count)")            // 43guard let jsonStrData = jsonStrData else { return }
print("jsonStrData: \(jsonStrData.count)")          // 92

protobuf 基础类型与Swift类型映射关系

Proto type

Swift Type

int32Int32
sint32Int32
sfixed32Int32
uint32UInt32
fixed32UInt32
int64Int64
sint64Int64
sfixed64Int64
uint64UInt64
fixed64UInt64
boolBool
floatFloat
doubleDouble
stringString
bytesData
http://www.yayakq.cn/news/45755/

相关文章:

  • 建设银行手机外汇网站西部数码网站管理助手 提权
  • 濮阳网站建设价格全球热点app下载
  • 开州快速建网站wordpress 增加内存
  • 嘉兴搜索引擎网站推广wordpress有趣的插件
  • 深圳低价网站建设wordpress特殊插件
  • 网站导航栏兼容性怎么样网站开源
  • 个人网站如何优化关键词做网站公司哪好
  • 国外网站开发网站排名软件推荐
  • 网站空间绑定域名怎么进入wordpress后台改
  • 北京市建设教育协会网站首页科技网站欣赏
  • 电器网站建设策划书中国建设工程信息网官网查询系统
  • 网站安全建设总结怎么创造网站
  • 飞鸽网站建设产品创新设计案例
  • 福州网站怎么做有没有返利网站做京东的
  • 视频网站建设类图怎么用手机制作手机网站
  • 商务网站建设的一般流程是什么网站从服务器上下载文件
  • 做购物平台网站需要多少资金自己做照片书的网站
  • 后台网站怎么做视频没有网站做cpa怎么赚钱
  • 宝塔系统怎么建设网站网站建设改革情况汇报
  • 广州市天河区门户网站做网站的费用计入什么费用
  • 丽水网站域名注册服务公司服务网站 建设原则
  • phpcms获取网站访问量ui设计可以在ipad上面做嘛?
  • 怎么做视频的网站南宁市优化网站公司
  • 精品课网站建设承德企业网站建设
  • 网站建设中是因为没有ftp上传吗购物网站的建设的好处
  • 婚恋网站要钱吗广州公司网站建设推广
  • 网站怎么可以做视频播放seo快速排名软件价格
  • 一个公司可以做几个网站网站空间ip地址
  • 哪些网站做任务可以赚钱seo变现培训
  • 个人网站维护费用在线直播网站开发实战项目