iOS开发之AddressBook框架详解 一、写在前面 首先,AddressBook框架是一个已经过时的框架,iOS9之后官方提供了Contacts框架来进行用户通讯录相关操作。...尽管如此,AddressBook框架依然是一个非常优雅并且使用方便的通讯录帮助库。本篇博客只要总结AddressBook框架的相关使用方法。 ...在AddressBook框架中,两个最重要的数据模型为ABAddressbookRef与ABRecordRef。...); //拿到所有联系人 CFArrayRef peopleArray = ABAddressBookCopyArrayOfAllPeople(addressBook);...在AddressBook框架中,这一组数据被封装为ABMultiValueRef对象。
1 首先导入库 2 然后在导入#import 文件 3 声明 @property (nonatomic...,assign) ABAddressBookRef addressBook;//电话簿 并进行初始化 self.addressBook = ABAddressBookCreateWithOptions...(NULL, NULL); 4 然后进行获取通讯录的操作 ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted...} //取得记录 CFArrayRef allPeopleCF = ABAddressBookCopyArrayOfAllPeople(self.addressBook
> save(@RequestBody AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId...()); log.info("addressBook:{}", addressBook); addressBookService.save(addressBook);...R setDefault(@RequestBody AddressBook addressBook) { log.info("addressBook:{}",...public R> list(AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId...()); log.info("addressBook:{}", addressBook); //条件构造器 LambdaQueryWrapper<AddressBook
> save(@RequestBody AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId());...查询指定用户的全部地址 */ @GetMapping("/list") public R> list(AddressBook addressBook) {...addressBook.setUserId(BaseContext.getCurrentId()); log.info("addressBook:{}", addressBook);...= addressBook.getUserId(), AddressBook::getUserId, addressBook.getUserId()); queryWrapper.orderByDesc...(@RequestBody AddressBook addressBook) { log.info("addressBook:{}", addressBook); LambdaUpdateWrapper
>> list(AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId());...log.info("addressBook:{}", addressBook); //条件构造器 LambdaQueryWrapper queryWrapper...= addressBook.getUserId(), AddressBook::getUserId, addressBook.getUserId()); queryWrapper.orderByDesc...> setDefault(@RequestBody AddressBook addressBook) { log.info("addressBook:{}", addressBook);...> setDefault(@RequestBody AddressBook addressBook) { log.info("addressBook:{}", addressBook);
addressBook1 = AddressBook.newBuilder().addPeople(person1).build(); System.out.println(addressBook1)...; System.out.println("------------------"); // 链式构建 AddressBook addressBook2 = AddressBook .newBuilder...byte[] byteArray = addressBook1.toByteArray(); // 反序列化 - 字节数组转对象 AddressBook addressBook2...(addressBook2); // 序列化到文件 addressBook1.writeTo(new FileOutputStream("AddressBook1.txt...")); // 读取文件反序列化 AddressBook addressBook3 = AddressBook.parseFrom(new FileInputStream
对象转为字节数组 var bytes: ByteArray = addressBook.toByteArray() 序列化操作代码示例 : // 序列化操作...var serializeStart = System.currentTimeMillis() // 将 addressBook 对象转为字节数组 var bytes:...() var deserializeAddressBook: AddressBook = AddressBook.parseFrom(bytes) Log.i(TAG...: AddressBook.Builder = AddressBook.newBuilder()....() // 将 addressBook 对象转为字节数组 var bytes: ByteArray = addressBook.toByteArray()
get() = Companion.descriptor override val protoSize:...> { public val defaultInstance: pbandk.examples.addressbook.pb.AddressBook by lazy { pbandk.examples.addressbook.pb.AddressBook...orDefault(): pbandk.examples.addressbook.pb.AddressBook = this ?...: AddressBook.defaultInstance private fun AddressBook.protoMergeImpl(plus: pbandk.Message?)...: AddressBook = (plus as? AddressBook)?.
; 12345 3.定义结构体变量 全局变量addressbook AddressBook addressbook; 1 五、通讯录初始化 针对整个通讯录初始化,只需要将size设置为0。...\n"); return; } addressbook->persons[id] = addressbook->persons[addressbook->size- 1]; addressbook->size...void clearPerson(AddressBook* addressbook){ for (int i = 0; i size; i++) { addressbook...void sortPerson(AddressBook* addressbook){ if (addressbook->size <= 0){ printf("通讯录中没有联系人,请添加!...Person tmp = addressbook->persons[j]; addressbook->persons[j] = addressbook->persons[j + 1]; addressbook
/usr/bin/python import addressbook_pb2 import sys # This function fills in a Person message based on...") if type == "mobile": phone_number.type = addressbook_pb2.Person.MOBILE elif type ==...= addressbook_pb2.Person.WORK else: print "Unknown phone type; leaving as default value...= 2: print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE" sys.exit(-1) address_book = addressbook_pb2.../usr/bin/python import addressbook_pb2 import sys # Iterates though all people in the AddressBook and
{ repeated Person people = 1; } 需要构造 AddressBook , Person , AddressBook 3 个 JavaBean , 构造结果如下 :...对象 var addressBook: AddressBook = AddressBook() addressBook.persons = mutableListOf...对象 var addressBook: AddressBook = AddressBook() addressBook.persons = mutableListOf...: AddressBook.Builder = AddressBook.newBuilder()....对象 var addressBook: AddressBook = AddressBook() addressBook.persons = mutableListOf
将 NuGet 包 EasyAbp.PrivateMessaging.Domain,安装到 AddressBook.Domain项目。...将 NuGet 包 EasyAbp.PrivateMessaging.HttpApi,安装到 AddressBook.HttpApi 项目。...将 NuGet 包 EasyAbp.PrivateMessaging.MongoDB,安装到 AddressBook.MongoDB 项目。...将 NuGet 包 EasyAbp.PrivateMessaging.Web,安装到 AddressBook.Web 项目。...第四步:安装完毕 启动 AddressBook.Web 项目,可以看到私信模块已经安装成功了。 ?
/addressbook.proto 命令即可生成 addressbook_pb2.py 文件: syntax = "proto2"; package tutorial; message Person...{ repeated Person people = 1; } 测试人员的代码只需导入 addressbook_pb2 ,对其初始化后即可使用,比如对 Person 的字段加入一些测试值: import...addressbook_pb2 person = addressbook_pb2.Person() person.id = 1234 person.name = "John Doe" person.email.../usr/bin/python import addressbook_pb2 import sys # This function fills in a Person message based on.../usr/bin/python import addressbook_pb2 import sys # Iterates though all people in the AddressBook and
文章目录 一、Protobuf 源码分析 二、创建 Protobuf 对象 三、完整代码示例 四、参考资料 一、Protobuf 源码分析 ---- Protobuf 源文件如下 : addressbook.proto...对象 , 每个 AddressBook 对象中包含若干 Person 对象 , 每个 Person 对象中包含 若干 PhoneNumber 枚举值 , 如果对象的某字段在 Protobuf 源码中被...AddressBook.Builder 对象 var addressBookBuilder: AddressBook.Builder = AddressBook.newBuilder()....addPeople(person2Builder) 最终 , 调用 AddressBook.Builder 这个拼装后最大的构造器的 build 方法 , 创建 AddressBook 对象 ; 三、完整代码示例...: AddressBook.Builder = AddressBook.newBuilder().
{ repeated Person people = 1; } 编译addressbook.proto,在windows控制台进入addressbook.proto文件所在目录路径下,执行如下编译操作.../addressbook.proto 生成java class:org.chench.test.protobuf.AddressBookProtos.java,将生成的java文件拷贝到前面新建的maven...addressBook = AddressBook.newBuilder(); try { // 从指定文件读取数据 addressBook.mergeFrom...addressBook) { for(Person p : addressBook.getPeopleList()) { System.out.println(...addressBook = AddressBook.parseFrom(new FileInputStream(args[0])); Print(addressBook);
Here is a program which reads an AddressBook from a file, adds one new Person to it based on user input..., and writes the new AddressBook back out to the file again....addressBook = AddressBook.newBuilder(); // Read the existing address book....static void Print(AddressBook addressBook) { for (Person person: addressBook.getPeopleList()) {...AddressBook addressBook = AddressBook.parseFrom(new FileInputStream(args[0])); Print(addressBook
/addressbook.proto {18-07-20 15:09}wOw-RMBP:~/Projects/Protobuf wow% ls addressbook.proto com 生成的文件结构为...这是一个从文件读取AddressBook的程序,根据用户输入向其添加一个新Person,并将新的AddressBook再次写回文件。直接调用或引用协议编译器生成的代码的部分将用*标识。...addressBook = AddressBook.newBuilder(); // Read the existing address book....static void Print(AddressBook addressBook) { for (Person person: addressBook.getPeopleList()) {...* AddressBook addressBook = * AddressBook.parseFrom(new FileInputStream(args[0])); Print
文章目录 一、protoc 编译器简介 二、下载 protoc 编译器 三、使用 protoc 编译器编译 addressbook.proto 源文件 四、参考资料 一、protoc 编译器简介 ---...Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 ) 中 , 在 Android Studio 项目中添加了 Protobuf 源文件 addressbook.proto...源文件 ---- 将 addressbook.proto 源文件拷贝到 " D:\develop\protobuf\protoc-3.15.8-win64\bin\ " 目录 , 执行如下命令 : protoc...-ID:\develop\protobuf\protoc-3.15.8-win64\bin\ --java_out=. addressbook.proto -I 参数设置编译的 .proto 源文件所在的目录...表示当前目录 ; 最后的参数 addressbook.proto 是设置的 .proto 源文件的相对目录 ; 编译完成后 , 生成一个 com 目录 , 这里根据 Java 的类名层级生成的目录 ,
二、使用指南 1.定义.proto文件 以下面addressbook.proto为例来看下.proto的语法。...addressBook = AddressBook.newBuilder(); addressBook.addPeople( PromptForAddress(new...addressBook = AddressBook.parseFrom(new FileInputStream(args[0])); // @1 for (Person...person: addressBook.getPeopleList()) { System.out.println("Person ID: " + person.getId());...System.out.println(" Name: " + person.getName()); } @1 通过parseFrom将输入流转换为AddressBook消息对象 内容输出 Person
领取专属 10元无门槛券
手把手带您无忧上云