iOS开发之AddressBook框架详解 一、写在前面 首先,AddressBook框架是一个已经过时的框架,iOS9之后官方提供了Contacts框架来进行用户通讯录相关操作。 尽管如此,AddressBook框架依然是一个非常优雅并且使用方便的通讯录帮助库。本篇博客只要总结AddressBook框架的相关使用方法。 在AddressBook框架中,两个最重要的数据模型为ABAddressbookRef与ABRecordRef。 ); //拿到所有联系人 CFArrayRef peopleArray = ABAddressBookCopyArrayOfAllPeople(addressBook); 在AddressBook框架中,这一组数据被封装为ABMultiValueRef对象。
1 首先导入库 <AddressBook/AddressBook.h> 2 然后在导入#import <AddressBook/AddressBook.h>文件 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<AddressBook> setDefault(@RequestBody AddressBook addressBook) { log.info("addressBook:{}", public R<List<AddressBook>> 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>> 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); /** * 根据id修改地址 */ void update(AddressBook addressBook addressBook = new AddressBook(); BeanUtils.copyProperties(addressBookDTO, addressBook); ("查询用户{}的地址列表", userId); AddressBook addressBook = new AddressBook(); addressBook.setUserId addressBook = new AddressBook(); BeanUtils.copyProperties(addressBookDTO, addressBook); 查询地址") public Result<AddressBook> getById(@PathVariable Long id) { AddressBook addressBook
>> list(AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId()); log.info("addressBook:{}", addressBook); //条件构造器 LambdaQueryWrapper<AddressBook> 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);
对象转为字节数组 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()
> save(@RequestBody AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId ()); log.info("addressBook:{}", addressBook); addressBookService.save(addressBook); R<AddressBook> setDefault(@RequestBody AddressBook addressBook) { log.info("addressBook:{}", public R<List<AddressBook>> list(AddressBook addressBook) { addressBook.setUserId(BaseContext.getCurrentId ()); log.info("addressBook:{}", addressBook); //条件构造器 LambdaQueryWrapper<AddressBook
<pbandk.examples.addressbook.pb.AddressBook> 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)?.
/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
; 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 < addressbook->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
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
{ 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().
_serialized_end=324 _globals['_ADDRESSBOOK']._serialized_start=326 _globals['_ADDRESSBOOK']. 例如: import addressbook_pb2 person = addressbook_pb2.Person() person.id = 1234 person.name = "John Doe 这里示例代码从文件中读取 AddressBook,根据用户输入向其中添加一个新 Person,然后将新的 AddressBook 再次写回文件。直接调用或引用协议编译器生成的代码的部分已突出显示。 address_book = addressbook_pb2.AddressBook() # 读取已存在地址簿 if os.path.exists('my_addressbook.db'): .AddressBook() # 读取已存在地址簿 with open('my_addressbook.db', 'rb') as f: address_book.ParseFromString(
{ 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