Parse支持的数据类型
目前Parse的table column支持NSString, NSNumber, NSDate, NSData, 或者另外一个PFObject。同时也可以使用NSDictionary and NSArray保存结构化的数据。其中NSArray 支持相对应的查询。虽然可以使用NSData保存二进制数据,但是推荐先使用PFFile保存文件,比如照片等,而在对应的column保存PFFile的引用。
常用的查询
类似SQL,查询时先创建PFQuery对象,然后设置查询条件。
先看个简单的,查询GameScore表中playName等于 “Dan Stemokoski”的所有记录。
PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];[query whereKey:@"playerName" equalTo:@"Dan Stemkoski"];NSArray *objects = [query findObjects];
这个是查NSNumber,查询 playAge大于18的所有记录。
[query whereKey:@"playerAge" greaterThan:[NSNumber numberWithInt:18]];
这个是查数组的,aryMatchTypes是一个NSArray的数组,下面的语句查询aryMatchTypes包含"Football"的所有记录。
复制代码
[query whereKey:@"aryMatchTypes" equalTo:@"Football"];
既然是面向对象的,Parse也支持关联查询,下面的例子中Comment和Post都是Parse的对象,下面的代码可以查询包含myPost对象的所有comment记录。
PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
[query whereKey:@"post" equalTo:myPost];
Parse支持子查询,下面的例子是找到所有comments的记录,其中的post含有image。
PFQuery *innerQuery = [PFQuery queryWithClassName:@"Post"];
[innerQuery whereKeyExists:@"image"];
PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
[query whereKey:@"post" matchesQuery:innerQuery];
或查询,很遗憾,Parse不支持OR条件查询,只支持AND,要用OR的话可以用Compound query,类似SQL的Union
PFQuery *lotsOfWins = [PFQuery queryWithClassName:@"Player"];
[lotsOfWins whereKey:@"wins" greaterThan:[NSNumber numberWithInt:150]];
PFQuery *fewWins = [PFQuery queryWithClassName:@"Player"];
[lotsOfWins whereKey:@"wins" lessThan:[NSNumber numberWithInt:5]];
PFQuery *query = [PFQuery orQueryWithSubqueries:[NSArray arrayWithObjects:fewWins,lotsOfWins,nil]];
缓存
查询的结果集合支持缓存,也可以设定不同的缓存策略。缓存都是Query级别的。
query.cachePolicy = kPFCachePolicyNetworkElseCache;
可以指定以下几种缓存策略:
kPFCachePolicyIgnoreCache: 查询结果来自服务器,而且也不会保存在缓存。这是默认的设定。
kPFCachePolicyCacheOnly : 只从缓存取数据。如果缓存没有数据会产生PFError,也可以忽略不处理这个error。
kPFCachePolicyNetworkOnly: 只从网络取数据,同时保存在缓存。
kPFCachePolicyCacheElseNetwork: 先从缓存取数据,如果没有的话,再从网络取。
kPFCachePolicyNetworkElseCache: 先从网络取数据, 没有的话再从缓存取。
kPFCachePolicyCacheThenNetwork; 先从缓存取数据,无论结果如何都会再次调用callback函数查询服务器。也就是说会产生2次调用。通常的用法是先快速取出数据展示view,然后再后台连接网络取得最新数据,取到后用来自网络服务器的最新数据更新view。这种policy不能用于findObjects方法,只能用在异步调用的findObjectsInBackground。
第六种策略引出了Parse的一大特色: 后台异步调用,这也是iOS网络APP开发经常需要解决的问题,Parse可以让用户无需在按下某个按钮后无所是从的看着一动不动的屏幕发呆。Parse提供了多种解决方案,有空再讲。
分享到:
相关推荐
这个过程通常涉及到后端开发,其中" SNDT_app后台"可能指的是某种特定的技术栈或服务,而"fourthatu"可能是项目名或者一个特定的工具。下面我们将详细探讨这一转换过程以及相关的技术点。 首先,JSON是一种轻量级的...
综上所述,"Simple-Chat-App"通过Parse.com提供的服务,实现了便捷的后台支持,使得开发者能够专注于构建功能丰富且用户体验良好的聊天应用。这一项目不仅展示了Java在移动应用开发中的应用,也突显了云服务在现代...
在技术实现上,"Love-App"依赖于Parse.com作为其后端服务,这是一个强大的云平台,为移动开发者提供了数据存储、用户身份验证和推送通知等功能。 首先,让我们深入了解一下Java在"Love-App"中的角色。Java是Android...
2. **Android推送通知**:使用Google的GCM(Google Cloud Messaging)或FCM(Firebase Cloud Messaging)服务,通过服务器发送消息到Android客户端,即使应用在后台或未运行也能接收通知。 3. **Java编程**:Android...
使用`Uri.parse()`方法创建一个指向应用商店的URI。这里的URI格式是`market://details?id=<包名>`,其中`<包名>`替换为目标应用的包名。例如,如果目标应用的包名为`com.example.myapp`,那么URI就是`market://...
4. **Parse Server**:Parse Server 是一个开源后端服务平台,允许开发者轻松地构建移动和Web应用。在Podlive-macos中,Parse Server可能被用来存储和管理用户的订阅信息、播放历史、偏好设置等数据,同时处理与...
通过集成Parse服务,开发者能够快速构建出具有云支持的移动应用,而无需自己搭建服务器。 **Java技术** 项目采用Java编程语言进行开发,Java是Android开发的官方语言。Java以其面向对象的特性、丰富的库支持和跨...
在移动应用开发中,系统推送是服务提供商通过服务器向用户设备发送消息的一种方式,即使应用不在后台运行,用户也能收到通知。在Android中,这个功能主要依赖于Google的Firebase Cloud Messaging (FCM)服务,以前...
《Android应用源码解析:构建电话功能软件"QuietSleep"》 在当今信息化社会,智能手机已经成为我们生活中不可或缺的一部分,而Android作为全球最流行的移动操作系统,其应用开发领域广阔,为开发者提供了丰富的平台...
在Android中,我们通常会用jsoup来获取网页内容,例如从网页上抓取笑话故事,然后将这些内容展示在App中,这样用户无需离开应用就能浏览网页内容。 在这个项目中,我们可以学习到以下几点关键知识: 1. **jsoup的...
7. **应用开发**:示例代码可能包括如何将这些接口集成到实际项目中,如网页应用、移动应用或者后台服务,提供完整的业务流程示例。 8. **最佳实践**:除了基本的API调用,示例代码还可能包含如何优化性能、提高...
本文将深入探讨Android通话记录源码的相关知识点,帮助你理解如何在Android平台上构建一个能够读取、显示和管理通话记录的应用。 1. **AndroidManifest.xml**:这是每个Android应用的核心配置文件,它定义了应用的...
ASP.NET 是一种基于微软.NET Framework的web应用程序开发框架,它提供了丰富的工具和功能来构建动态网站、Web应用程序和Web服务。在ASP.NET中,我们经常需要在不同的页面之间传递数据,这可以通过多种方式实现,包括...