Parse 构建移动APP后台服务(二)

Parse支持的数据类型

目前Parse的table column支持NSString, NSNumber, NSDate, NSData,
或者另外一个PFObject。同时也可以使用NSDictionary and NSArray保存结构化的数据。其中NSArray
支持相对应的查询。虽然可以使用NSData保存二进制数据,但是推荐先使用PFFile保存文件,比如照片等,而在对应的column保存PFFile
的引用。

常用的查询

类似SQL,查询时先创建PFQuery对象,然后设置查询条件。

先看个简单的,查询GameScore表中playName等于 “Dan Stemokoski”的所有记录。

Object c代码  

  1. PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];[query whereKey:@"playerName" equalTo:@"Dan Stemkoski"];NSArray *objects = [query findObjects];

这个是查NSNumber,查询 playAge大于18的所有记录。

Object c代码  

  1. [query whereKey:@"playerAge" greaterThan:[NSNumber numberWithInt:18]];

这个是查数组的,aryMatchTypes是一个NSArray的数组,下面的语句查询aryMatchTypes包含"Football"的所有记录。

复制代码

Object c代码  

  1. [query whereKey:@"aryMatchTypes" equalTo:@"Football"];

既然是面向对象的,Parse也支持关联查询,下面的例子中Comment和Post都是Parse的对象,下面的代码可以查询包含myPost对象的所有comment记录。

Object c代码  

  1. PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
  2. [query whereKey:@"post" equalTo:myPost];

Parse支持子查询,下面的例子是找到所有comments的记录,其中的post含有image。

Object c代码  

  1. PFQuery *innerQuery = [PFQuery queryWithClassName:@"Post"];
  2. [innerQuery whereKeyExists:@"image"];
  3. PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
  4. [query whereKey:@"post" matchesQuery:innerQuery];

或查询,很遗憾,Parse不支持OR条件查询,只支持AND,要用OR的话可以用Compound query,类似SQL的Union

Object c代码  

  1. PFQuery *lotsOfWins = [PFQuery queryWithClassName:@"Player"];
  2. [lotsOfWins whereKey:@"wins" greaterThan:[NSNumber numberWithInt:150]];
  3. PFQuery *fewWins = [PFQuery queryWithClassName:@"Player"];
  4. [lotsOfWins whereKey:@"wins" lessThan:[NSNumber numberWithInt:5]];
  5. PFQuery *query = [PFQuery orQueryWithSubqueries:[NSArray arrayWithObjects:fewWins,lotsOfWins,nil]];

缓存

查询的结果集合支持缓存,也可以设定不同的缓存策略。缓存都是Query级别的。

Object c代码  

  1. query.cachePolicy = kPFCachePolicyNetworkElseCache;

可以指定以下几种缓存策略:

kPFCachePolicyIgnoreCache: 查询结果来自服务器,而且也不会保存在缓存。这是默认的设定。

kPFCachePolicyCacheOnly : 只从缓存取数据。如果缓存没有数据会产生PFError,也可以忽略不处理这个error。

kPFCachePolicyNetworkOnly: 只从网络取数据,同时保存在缓存。

kPFCachePolicyCacheElseNetwork: 先从缓存取数据,如果没有的话,再从网络取。

kPFCachePolicyNetworkElseCache: 先从网络取数据, 没有的话再从缓存取。

kPFCachePolicyCacheThenNetwork;
先从缓存取数据,无论结果如何都会再次调用callback函数查询服务器。也就是说会产生2次调用。通常的用法是先快速取出数据展示view,然后再后
台连接网络取得最新数据,取到后用来自网络服务器的最新数据更新view。这种policy不能用于findObjects方法,只能用在异步调用的
findObjectsInBackground。

第六种策略引出了Parse的一大特色: 后台异步调用,这也是iOS网络APP开发经常需要解决的问题,Parse可以让用户无需在按下某个按钮后无所是从的看着一动不动的屏幕发呆。Parse提供了多种解决方案,有空再讲。

分享到:

时间: 2024-10-09 21:16:02

Parse 构建移动APP后台服务(二)的相关文章

Parse 构建移动APP后台服务(一)

目前正在开发的产品告一段落,有时间总结下经验,也顺便分享一下我们主要使用的平台-Parse. 什么是Parse? Parse是一群美国人开发的专为移动APP服务的云计算平台,与现有的其他云计算平台相比,Parse除了提供Restful的service 之外,也提供了官方的iOS和Android SDK.个人认为高质量的client端SDK是Parse区分与其他云服务的核心优势.为什么呢?看完我的文章就知道了. 为什么要用Parse? 先想想开发一个简单的需要保存用户数据的APP,你需要做什么.非

专业移动APP 手机APP后台服务端开发

专业移动APP 手机APP后台服务端开发优势:8年PHP 9年JAVA开发经验采用THINKPHP 和JFINAL ,SBadmin 2框架进行开发完善的开发文档免费一年BUG维护 可签协议,可先预付20%,也可分段付款, 亲 请带好需求文档! QQ 184377367 报价原则1:功能列表2:兼容性3:安全要求等级4:是否需要完善的开发文档5:后台UI是否有要求

app后台服务

一个免费的后台服务 能够上传保存数据和获取后台数据,支持推送服务,相当于一个简单的后台.基本能够满足小型app的后端需求. https://www.parse.com/ 注册后就可以创建app. 添加parse库的方法: 1. 添加sdk库到工程 2.下述系统库 AudioToolbox.framework CFNetwork.framework CoreGraphics.framework CoreLocation.framework MobileCoreServices.framework

android 实现后台服务及源码下载

android APP后台服务可以长期与服务器进行长期的交互,保证数据的实时性,这个小项目主要实现的是在app退出之后依然可以运行服务.使用系统的Intent.ACTION_TIME_TICK进行实现,这个系统的广播每隔一分钟就进行广播一次,可以在程序中接收该广播消息,接收到之后检测app中的service服务是否在运行,如果在运行,则不处理,如果没有运行,则重新启动该service服务. 值得注意的是,虽然本示例可以实现后台运行服务的功能,但是当用户按home键进行清楚内存的时候依然可以把ap

Win10/UWP开发—使用Cortana语音与App后台Service交互

上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比调用前台的App,调用后台任务有个有点就是App不用被启动即可为用户提供服务. 要想使用Cortana调用App后台任务,首先我们需要定义VCD文件,我们依旧使用上篇中的代码,让它支持Cortana调用后台任务. 创建后台任务 新增一个[Windows运行时组件]项目,暂时起名叫做:XiaoMiBa

你用什么作为app应用的后台服务?

?? 你用什么作为app应用的后台服务? Ruby on Rails还是PHP? PHP+Mysql作为Android app的后台:http://www.tutorialspoint.com/android/android_php_mysql.htm PHP+Mysql作为IOS app的web service后台: http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-a

小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载二(生命周期)

4.1 什么是生命周期 想要真正地理解PhoneGap应用开发的内涵,首先需要理解什么是生命周期.这在字面上其实非常容易理解,一个应用从开始运行被手机加载到应用被退出之间的过程就称之为一个生命周期.为了使读者更容易理解,本节将以Android原生SDK中Activity类的生命周期结合Eclipse中的LogCat调试工具进行实战讲解. 4.1.1  Activity的生命周期 先仔细的观察图4-1的内容,这是谷歌官方给出的Activity生命周期流程图,它包括了一个安卓应用从被创建到结束时所经

jquery Mobile应用第2课《构建跨平台APP:jQuery Mobile移动应用实战》连载二(简单的QWER键盘)

在jQuery Mobile的布局中,控件大多都是单独占据页面中的一行,按钮自然也不例外,但是仍然有一些方法能够让多个按钮组成一行,比如说在范例6-5中就利用按钮分组的方法使4个按钮并列在一行中,如图6-24和图6-25所示. 图6-24 实现按钮分组的方法 图6-25 分组的按钮 而在上一节中也许有读者已经注意到,头部栏中的按钮并没有占据一整行,也没有与多个按钮一起成组存在,那么在页面的其他部分是否也可以让按钮以这样的形式出现呢? [范例6-9 简单的QWER键盘] 01 <!DOCTYPE

OData(01) - 使用OData高效构建后台服务

使用OData高效构建后台服务 如题本文是要说OData的,无论了解还是不了解都可以看下,本文的前半段无论是做NET还是JAVA或者其他的朋友都同样适用,不过还是以NET为样例说明,后半段就有点晦涩看大家心情了. 开发后台的问题 这里要先称述下后台服务的发展历程,从WebService的出现后到现在出现了很多后台服务相关的概念及框架概念有服务化.Restful.微服务等等,NET中的框架例如WCF.WCF数据服务.WCF Rest.MVC最后到WebAPI. 到目前为止,无论出现了多少概念还是框