Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从iOS应用程序在服务器上实现动态搜索的最佳方式是什么?

从iOS应用程序在服务器上实现动态搜索的最佳方式是什么?
EN

Stack Overflow用户
提问于 2013-08-01 09:54:54
回答 1查看 753关注 0票数 1

我正在努力解决一个实现动态搜索的问题。

以下是我想要实现的目标:

在我的应用程序中有一个选项,用户(程序经理)将能够搜索他的团队成员。每个PM在服务器端(web服务)都有自己的帐户,其中是一个表team_members,其中包含与该经理相对应的所有团队成员。

它们的数量可以超过数百个。

我开发的客户端应用程序有一个搜索团队成员的选项。

我想动态地实现它:

例如,当用户打印第一个字母a时,我向服务器查询,得到所有匹配的字母: Antuan,BArrow等。

然后,用户print ab和我进行查询,该查询必须返回亚伯拉罕、阿不都拉等。所有匹配结果都显示在UITableView中。

每次在UITextField中发送文本时,都会向服务器发出HTTP查询。我用dispatch_async实现了它:在UITextFieldTextDidChangeNotification上,我创建了一个dispatch_async,在其中我用searchbar.text发出了一个HTTP请求。

问题是:它的运行速度非常慢。我经常得到一个异常的bad selector was sent to the instance

所以我的问题是:

为什么我的方法不好?对此有什么更好的解决方案?

或者动态搜索,这是一个非常糟糕的想法,我必须在点击某个按钮后才能进行搜索?

谢谢。我希望一些有经验的iOS开发人员能给我一些好的建议。

EN

回答 1

Stack Overflow用户

发布于 2013-08-01 12:41:07

每次有人输入字符时发出HTTP请求可能永远不会足够快(这也没有真正的意义--继续读下去)。对于特定大小的列表,答案是在您呈现字段时(但在用户开始键入该字段之前)在后台拉出整个列表。一旦您有了列表,您就可以在内存中开始在本地设备上进行匹配。“超过数百个”并不是很具体,这取决于网络速度,但我猜如果您的列表的有效负载大小小于50K,那么拉出整个列表将是最简单的方法。

如果列表太大而不切实际,但是受用户输入的第一个字符限制的列表不是太大,那么最好的方法可能是等待第一个字符,异步触发HTTP请求,并且只有在收到包含以该字母开头的所有项的响应后才启动动态匹配。要记住的一件事是:如果列表由第一个字符限制,这是您必须发出的唯一HTTP请求(除非用户更改了第一个字符),因为以该字母开头的所有可能性都将在该列表中。在此基础上,您可以在本地缩减列表,而无需进一步的HTTP请求。

至于为什么会出现异常,如果不看实际代码就很难说。尝试在Xcode中设置异常断点。这将允许您在抛出异常时在调试器中停止,这将向您显示导致异常的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17990755

复制
相关文章
Anbox:在 Linux 上运行 Android 应用程序的简单方式
Anbox 是 “Android in a box” 的缩写。Anbox 是一个基于容器的方法,可以在普通的 GNU/Linux 系统上启动完整的 Android 系统。
用户8639654
2021/09/23
5.2K0
新手学习编程的最佳方式是什么?
回答这个问题是我最近两年来唯一的关注点。我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面,比其他人有着更好的表现。 聚焦习惯而不是目标 独自学
Crossin先生
2018/04/16
1.1K0
新手学习编程的最佳方式是什么?
新手学习编程的最佳方式是什么
回答这个问题是我最近两年来唯一的关注点。我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面,比其他人有着更好的表现。 聚焦习惯而不是目标 独自学
程序员互动联盟
2018/03/13
1.1K0
新手学习编程的最佳方式是什么
在ios系统上实现更改IP地址
在当今的互联网环境中,我们经常需要更改手机的IP地址来避免一些限制或保护我们的隐私。然而,在iOS系统上,更改IP地址并不像在其他平台上那么容易。因此,本文将分享一种简单的方法,帮助您在iOS系统上免费更改手机的IP地址。
华科云商小徐
2023/09/14
1.9K0
在K8S/OpenShift上开发应用程序的14种最佳实践
在这一年中,我一直在与几个开发团队合作,他们开始在K8S/OpenShift上构建应用程序。我的目标是为开发人员提供指导和最佳实践,以帮助他们成功地将应用程序部署到生产环境中。如果您是在K8S/OpenShift之上构建应用程序的开发人员,那么您可能会对此博客感兴趣。
东风微鸣
2022/04/21
9010
动态ip服务器是什么?动态ip服务器的优缺点是什么?
服务器的类型可以被分为很多种,包括1u服务器、2u服务器以及动态ip服务器等,这些服务器有各自的功能和作用,提起动态ip服务器的时候,有一些人可能会感到陌生,不太理解它的含义和功能。动态ip服务器是什么?动态ip服务器有哪些优缺点?
用户8715145
2021/09/10
5.1K0
CSS中的float定位技术在iOS上的实现
几乎所有会WEB前端开发的同学都知道CSS中有一个float属性用于实现HTML元素的浮动定位展示。float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围。不过在 CSS 中,任何元素都可以浮动,假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。 浮动布局主要用于那些图文环绕以及实现一些界面不规则排列的场景,并且浮动定位技术在WEB前端开发中应用的非常普遍。
欧阳大哥2013
2018/08/22
2.2K0
CSS中的float定位技术在iOS上的实现
如何使用Puppeteer在Node JS服务器上实现动态网页抓取
动态网页抓取是指通过模拟浏览器行为,获取网页上的动态生成的数据,如JavaScript渲染的内容、Ajax请求的数据等。动态网页抓取的难点在于如何处理网页上的异步事件,如点击、滚动、等待等。Puppeteer是一个基于Node JS的库,它提供了一个高级的API,可以控制Chrome或Chromium浏览器,实现动态网页抓取。本文将介绍如何使用Puppeteer在Node JS服务器上实现动态网页抓取,并给出一个简单的案例。
jackcode
2023/08/24
9660
分析Oracle在云上实现高可用的几种实现方式
针对Oracle迁移上云项目,云提供给用户的物理机上加载有三张网卡供用户使用,一张用于跑业务,另外两张可以用于心跳线网络。另外,存储网络是单独的网口,在建设时已由服务商做好配置,不含在这三张网卡内。基于公有云技术,为了组建资源池内部管理控制专网,因此现市面上公有云提供商的IPMI端口,均不能提供出来用于对外访问。
希望的田野
2019/09/24
2.1K0
分析Oracle在云上实现高可用的几种实现方式
nodejs 下运行 typescript的最佳方式是什么?
在 Node.js 中运行 TypeScript 的最佳方式是使用 TypeScript 编译器(tsc)将 TypeScript 代码编译为 JavaScript,然后在 Node.js 环境中运行生成的 JavaScript 代码。以下是一种常见的做法:
王小婷
2023/09/14
1.6K0
离线存储加密货币的最佳方式是什么?
我们最好将它们存储在冷藏库或离线钱包中,因为在这些类型的钱包中,您可以控制私钥 目前市场上有数百种加密货币。虽然他们中的一些人拥有多个离线钱包选项,但其中一些根本没有。 我将用最新的选项更新此冷库或离线钱包列表,因此请继续检查这里是否有更新。 Bitcoin-Ledger Nano S, Trezor & KeepKey,Bitaddress,Electrum, Armory Ethereum-Ledger Nano S, Trezor & KeepKey,MyEtherWallet Ripple-Ledg
架构师研究会
2018/04/09
2.1K0
Jenkins 在 Kubernetes 上的最佳实践
Jenkins 是由 Java 编写的编排引擎,在 Full GC 时会 Stop The World(STW)。在大规模构建时,STW 可能会导致 Jenkins 无法处理新的请求。
陈少文
2021/06/05
1.1K0
使用 Python 开发桌面应用程序的最佳方法是什么?
Python 是一种通用编程语言,可用于各种任务,包括 Web 开发、数据分析和机器学习。它的最大优点之一是它还可用于创建桌面应用程序。在本文中,我们将深入探讨使用 Python 开发桌面应用程序的最佳实践。
很酷的站长
2023/02/18
7.1K0
使用 Python 开发桌面应用程序的最佳方法是什么?
在iOS上推流
编译librtmp需要用到openssl,所以先编译openssl,下载脚本OpenSSL。
Helloted
2022/06/07
8640
在iOS上推流
怎样在ios上上架app
在上架App之前想要 真机测试的同学 请查看 iOS- 最全的真机测试教程 里面包含怎么让多台电脑同时 上架App和同时真机调试。P12文件的使用详解
iOS程序应用
2023/01/13
5330
iOS应用程序的脱壳实现原理浅析
对于诸多逆向爱好者来说,给一个app脱壳是一项必做的事情。基于安全性的考虑,苹果对上架到appstore的应用都会进行加密处理,所以如果直接逆向一个从appstore下载的应用程序时,所能看到的“源代码”将非常的晦涩难懂。为了能看懂应用程序的“源代码”,就必须对应用程序进行解密,也就是所谓的脱壳。脱壳后的目的是可以分析应用程序的一些技术实现原理,或者利用一些漏洞进行攻击和测试。
欧阳大哥2013
2018/11/09
1.2K0
IOS CAKeyFrameAnimation 实现动态位移
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 // Do any additional setup after loading the view, typically from a nib. 4 5 let imageView = UIImageView(frame:CGRect(x:40, y:80, width:64, height:64)) 6 imageView.image = UIImage(named:“star”
用户5760343
2019/07/08
1.3K0
在JBOSS服务器上使用Myfaces的JSF实现
JBOSS AS服务器默认使用的JSF实现是SUN的RI,要把他替换成Myfaces需要:
EltonZheng
2021/01/22
8480
PHP实现多线程编程的最佳实现方式
PHP多线程:多线程是java中一个很不错的东西,PHP4的时候PHP对多线程的支持不是很好,在大多数人得印象中PHP是不支持多线程的,其实那是错误的。在PHP5之后多线程实现方法和fsockopen函数有关。 当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去引入其他的语言,比如perl。 其实的是大多数情况下,你大可不必使用 fork 或者线程,并且你会得到比用 fork 或 thread 更好的性能。
Kunkka Wu
2022/01/13
9280
iOS 引导页实现方式
主要用在修改一些组件的默认样式 这里用于获取UIPageControl的属性 修改原来的点为自己的图片
码客说
2019/10/22
1.4K0

相似问题

实现搜索的最佳方式是什么?

54

实现简单文本搜索的最佳方式是什么

21

从iOS应用程序在远程服务器上搜索的最佳实践

14

在模式DAL中实现搜索的最佳方式是什么?

11

在iOS中,实现滑动“抽屉”的最佳方式是什么?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文