iOS-模糊查询

http://blog.csdn.net/qq_33701006/article/details/51836914

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

前言:

为了巩固FMDB,就来找个简单的Demo学习一下。不好找工作啊,就学习吧,没应聘的消遣吧。

  • 简单介绍:
    模糊查询:是指确定给定的字符串是否与指定的模式匹配。

    模式可以包含常规字符和通配符字符。
Demo解析
一、创建项目/配置环境/搭建主框架
  • [详解]:当我们配置好应用环境,并且手动集成完FMDB之后,导入其依赖库libsqlite3.tbd。就来到AppDelegate中,进行应用框架的搭建。在AppDelegate中为显示主界面嵌入一个导航控制器,并显示。如图所示:

    创建项目/配置环境

    二、搭建UI
  • [详解]:创建一个UItableView和UISearchBar,分别添加到主View和tableView头视图上,并分别实现其所需的数据源方法和代理方法。如图所示:
    --上部分

    上部分

    --下部分

    下部分

    当前效果展示:

    当前效果展示

    三、创建扩展类/并封装数据库管理工具
  • [详解]:创建一个获取汉字转成拼音字符串扩展类,同时封装一个数据库管理的工具类。
    1.创建扩展类
      首先,声明一个获取汉字转换成拼音的方法
      其次,将获取的中文转换成可变字符并利用CFStringTransform转换成带声调的字符串
      再次,再转换成不带声调的拼音,并用@" "空格切割成数组。
      最后,再完成获取汉字转成拼音字符串  通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字 搜索功能

    1.1声明方法

    声明方法

    1.2方法实现

    方法实现

    2.创建工具类

    如图1:

    声明

    如图2:

    单例

    如图3:

    创建表和插入

    如图4:

    查询

    四、收尾

    如图1:

    数据

    如图2:

    搜索

    五、最终显示效果

    最终显示效果

  • 知识点小结:
    1、将字符串切割成数组 componentsSeparatedByString
    2、appendString 附加的是一个已经完整的字符串。
    3、appendFormat 附加的是按指定格式、指定参数的字符串。
    4、@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。
       这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。
       一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。
    5、大概意思归结出来就是两点:
       (1).__block对象在block中是可以被修改、重新赋值的。
        (2).__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。
        (3).__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。

    有点乱~~~?_?

时间: 2024-10-21 02:14:40

iOS-模糊查询的相关文章

IOS开发数据库篇—SQLite模糊查询

IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 // 03-模糊查询 4 // 5 // Created by apple on 14-7-27. 6 // Copyright (c) 2014年 wendingding. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h

iOS数据持久化—数据库SQLite模糊查询

IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03-模糊查询 // // Created by apple on 14-7-27. // Copyright (c) 2014年 wendingding. All rights reserved. // #import <Foundation/Foundation.h> @interface YYPe

IOS FMDB模糊查询

http://blog.sina.com.cn/s/blog_9630f1310101fx1d.html /查询记录 -(NSArray*)selectitemDream_desc:(JiemengSimple *)item { NSString *sql = [NSString stringWithFormat:@"SELECT * FROM pinyinSimple WHERE alpha like '%@%%'",item.dream_keyword];//模糊查询,查找alph

IOS 通讯录的模糊查询

1.首先拿到通讯录 -(void)ReadAllPeoples { [contacts removeAllObjects]; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(nil, nil); dispatch_semaphore_t sema = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(addressBook, ^(

10 行 Python 代码实现模糊查询/智能提示

10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P) Sublime Text (Cmd-P) '模糊匹配'这是一个极为有用的特性,同时也非常易于实现. 2.问题分析: 我们有一堆字符串(文件名)集合,我们根据用户的输入不断进行过滤,用户的输入可能是字符串的一部分.我们就以下面的

MySQL指定模糊查询范围 或 获取或者查询数据库字段的特定几位

SUBSTR 函数 正常的: select * from sky_user WHERE name LIKE "%name%" 现在我需要匹配name的前五位 select * from sky_user WHERE SUBSTR(name,1,5) LIKE "%name%" SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracl

DevExpress 选择框如何进行模糊查询

dev中有很多的选择框控件,但是没有发现能够实时模糊查询的选择框,lookupedit是在数据源不变情况下实现自动匹配,但很多时候数据量太大以至于我们没法先绑定数据源. 这时我们需要一个能够实现实时匹配的SearchTextBox.这里我们用到了popupcontainerEdit. 先从工具栏中拖一个popupcontainerEdit和一个popucontainerControl.popupcontainerEdit像是一个lookupedit的输入选择框.而popucontainerCon

sql server模糊查询、分组

一.系统函数 1.convert(类型[length] ,表达式[,样式]) 2.isnull(表达式,默认值) 字符函数:  len() 长度  ltrim()|rtrim()去除左右空格  right()|left()截取右边或左边字符  substring():按位置和长度截取 日期函数:  dateadd()  日期加操作  dateDiff()  两个日期差  getdate()  获取当前系统日期  datepart() 获取日期中一部分 二.模糊查询  like '模式'    只

python模糊查询

#!/bin/env python #coding:utf-8 filename = '/py/Day01/Contact/userinfo' init_username = 'frame' init_password = 'frame' success = 0 while True:     username = raw_input("Username: ").strip()     password = raw_input("Password: ").strip

mongodb 模糊查询以及$type使用

mongodb 模糊查询以及$type使用 2012-09-11 14:13:30|  分类: mongodb |  标签: |举报 |字号大中小 订阅 最近有一监控业务,由于数据采集到非数字内容,导致监控图表无法正常显示,所以要找出这部分数据,进行删除,然后开发员从源头更正插入数据库的数据,不再产生非数字内容. 下面举一个例子: 建立测试数据: for(i=1;i<=100;i++){db.test.insert({id:i,content:"test content",nam