iOS-搜索实验错误的地方-红色部分

 

经验教训:很多代码没有必要手动敲,知道逻辑,复制也可以。

代码一定要规范,层次要分明。

import UIKit

class ViewController: UITableViewController,UISearchBarDelegate{
   
    //这一段没有问题
    @IBOutlet weak var searchtext: UISearchBar!
    var pathdata:NSArray!
    var pathfliterdata:NSMutableArray!
   
    //这一段没有问题
    override func viewDidLoad(){
        super.viewDidLoad()
       
        self.searchtext.delegate = self
        self.searchtext.showsScopeBar = false
        self.searchtext.sizeToFit()
        let plistpath = NSBundle.mainBundle().pathForResource("team", ofType: "plist")
        self.pathdata = NSArray(contentsOfFile: plistpath!)
        self.filtercontentforsearchtext("", scope:-1)
    }
   
   
   
    func filtercontentforsearchtext(searchText:NSString,scope:Int){
        if(searchText.length == 0){
            self.pathfliterdata = NSMutableArray(array: self.pathdata)
            return
        }
       
        var tempArray :NSArray!
       
        if(scope == 1){ //中文 name字段是中文名
            let scopepredicate = NSPredicate(format: "SELF.name contains[c] %@",searchText)
            tempArray = self.pathdata.filteredArrayUsingPredicate(scopepredicate!)
            self.pathfliterdata = NSMutableArray(array: tempArray)
        }
        else if(scope == 0){ //英文 image字段保存英文名
            let scopepredicate = NSPredicate(format: "SELF.image contains[c] %@",searchText)
            tempArray = self.pathdata.filteredArrayUsingPredicate(scopepredicate!)
            self.pathfliterdata = NSMutableArray(array: tempArray)
        }else {                //查询所有
            self.pathfliterdata = NSMutableArray(array: self.pathdata)
        }
    }
   
   
   
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
   
   
   
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.pathfliterdata.count
    }
   
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       
        let cellIdentifier = "cellidentifier"
       
        var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath:indexPath) as? UITableViewCell
       
        let row = indexPath.row
        let rowDict = self.self.pathfliterdata[row] as NSDictionary
       
        cell.textLabel?.text = rowDict["name"] as? String
        let imagePath = NSString(format: "%@.png", rowDict["image"] as String)
        cell.imageView?.image = UIImage(named: imagePath)
       
       
       
        return cell
    }
    
    
    /// 实现 UISearchBarDelegate 协议方法
    //  获得焦点,成为第一响应者
    func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool {
        self.searchtext.showsScopeBar = true
        self.searchtext.sizeToFit()
        return true
    }
   
    //点击键盘上的搜索按钮
    func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        self.searchtext.showsScopeBar = false
        self.searchtext.resignFirstResponder()
        self.searchtext.sizeToFit()
    }
    //点击搜索栏取消按钮
    func searchBarCancelButtonClicked(searchBar : UISearchBar) {
        //查询所有
        self.filtercontentforsearchtext("", scope:-1)
        self.searchtext.showsScopeBar = false
        self.searchtext.resignFirstResponder()
        self.searchtext.sizeToFit()
    }
   
    //当文本内容发生改变时候调用
    func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
        self.filtercontentforsearchtext(searchText, scope:self.searchtext.selectedScopeButtonIndex)
        self.tableView.reloadData()
    }
   
    //当搜索范围选择发生变化时候调用
    func searchBar(searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
        self.filtercontentforsearchtext(self.searchtext.text, scope:selectedScope)
        self.tableView.reloadData()
    }
}

时间: 2024-12-07 21:46:39

iOS-搜索实验错误的地方-红色部分的相关文章

什么是core dump linux下用core和gdb查询出现"段错误"的地方

什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-3193279.html 有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误". 呵呵,这种问题我想很多人会经常遇到.遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自

hadoop数据容易出现错误的地方

最近在搞关于数据分析的项目,做了一点总结. 下图是系统的数据流向.容易出现错误的地方.1.数据进入hadoop仓库有四种来源,这四种是最基本的数据,简称ods,original data source,后续 的数据都是有这些组合而来a.日志文件b.http接口c.DB查询d.建表指向最后数据都是以hadoop文件的形式存放在hadoop中. 日志文件: 新增机器没有通知数据分析组抓日志 根据约定获取日志是遇到错误,例如:约定获取gz的压缩日志,结果没有 数据提供方rsync日志出现问题 http

ios Xcode编译错误

[BEROR]CodeSign error: code signing is requiredfor product type 'Application' in SDK 'iOS 7.1' xcode编译出现这个错误,我的做法是,附图 ios Xcode编译错误

iOS开发 日常错误积累

1.ios7 tableviewcell上面添加一个view,view上面有button,点击button不执行button的点击事件 解决办法: self.view.userInteractionEnabled = YES; [cell.contentView addSubview:self.view] 主要问题是cell的高度没有view本事的高度高,造成view没有完全在cell上,所以点击事件执行不了. 2.ios7 tableviewcell上面有button,但是button的点击效

iOS:编译错误Unknown type name ‘***'

目前有两种情况: 1.循环引用 把你.h中导入的.m文件改成@class,然后再在.m中import 2.没有导入框架 有时是在.mm文件里面操作,这时候需要使用OC的东西,比如说NSString什么的,就需要导入foundation.h 还有其他情况请留言,谢谢分享 iOS:编译错误Unknown type name '***'

ios cordite 读取错误CoreData could not fulfill a fault for '0x15b4a870

解释在这里 http://stackoverflow.com/questions/14296892/nsobjectinaccessibleexception-reason-coredata-could-not-fulfill-a-fault 这里是中文的详细解释 http://blog.csdn.net/meegomeego/article/details/17654947 关于这个问题,我们涉及到2个函数: /* returns the object for the specified ID

ios linking 链接错误

iOS duplicate symbols for architecture i386 标签: ios错误 2014-09-02 00:00 7400人阅读 评论(0) 收藏 举报  分类: iOS(9)  Xcode添加静态库以及编译选项配置常见问题 一,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示.问题:链接时,项目有重名文件.解决:根据错误提示,做如下检查:1.Taraget->Bui

ios审核要注意的地方(转)

磨刀不误砍柴工.作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机.对苹果iOS应用开发者来说尤其如此.苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些地方找茬.基本要点首先,你的应用程序: 不能导致手机故障(比如崩溃或屏幕问题) 长时间/过度使用之后反应仍然很快 应用内的所有价格信息中不能用固定值代替可变变量 不要使用任何SDK里面的私人API 不要使用任何SDK文档里面没有列出的功能 不要提及用户设备上不存在的硬件功能 如果需要网络连接,在没有

iOS 搜索条使用详解

在ios开发中搜索条的使用挺常见的,不过之前一直没用到也没细细研究,最近做外包项目的时候刚好用到,在这里记录一下使用的过程,只要理解了原理,其实还是比较简单的!上传的图片有点大,刚好可以看清楚它的使用效果! 我喜欢一步步的解析控件使用过程,其实真正的用心做一件事情是很享受的,虽然现在的社会都很注重效率和回报,这也是中国这种社会环境下难出大师级的人物的很重要的一个因素.扯得有点远了,只是希望国内开发者不要太急功近利,熟练应用本不是难事,一点点积累就好.下面开始搜索条 UISearchBar 和 U