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提供了多种解决方案,有空再讲。
分享到:
相关推荐
parse-server-example, 使用Express和解析服务器模块的示例服务器 parse-server-example使用解析服务器 MODULE的示例项目。阅读下面的完整解析服务器指南: ...
parse-android-1.13.1.jar,parse-android-1.13.1-sources.jar
为解析测试服务器测试android应用程序。
前端开源库-parse-key解析键,将字符串解析为与nodejs readline发出的字符串格式相同的键对象。
Arduino-Parse-SDK-Arduino.zip,arduino sdk for the parse platformwarning-由于缺少使用和贡献,此项目已退出,如果您希望继续使用,请分叉或如果您希望维护此项目,请让您自己知道,Arduino是一家开源软硬件公司和...
欢迎访问parse-scaffold(parse后台脚手架)! 即表示启动成功。 Config 配置前请确保您的app服务器有域名,且支持https访问(本项目中parse-dashboard配置为仅支持https); 根据服务器https的配置,配置index.js中的...
前端开源库-parse5-htmlparser2-tree-adapterparse5-htmlparser2-tree-adapter,parse5的htmlparser2树适配器。
开源软件smart_parse-master,可去 https://github.com上下载。本人在原来的基础上修改了部分地址不能识别,并自动填入文本框,适合网页部署jquery的地址识别。
官方离线安装包,亲测可用
parse-server, 解析 node/express兼容的API服务器模块 解析服务器是解析后端插件的一个开源版本,可以部署到任何可以运行的基础架构解析服务器与 Express web应用程序框架一起工作。 它可以添加到现有的web应用程序...
资源分类:Python库 所属语言:Python 资源全名:parse-1.1.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
您可以通过将Samba安装(或任何其他类型的安装)存储到每个parse-server实例的文件存储级别来实现此目的,例如,如果您通过docker使用parse-server(将SMB驱动器批量安装到- /Volumes/SMB-Drive/MyParseApp1/files:...
解析Android版SDK 该库可让您从Android应用访问强大的Parse云平台。 有关Parse及其功能的更多信息,请,和。 相依性 将此添加到您的根build.... implementation " com.github.parse-community.Parse-SDK-Android:go
Laravel开发-laravel-parse-sdk 分析Laravel 5的SDK桥,支持自托管分析服务器
前端开源库-remark-parse-yamlremark解析yaml,将yaml块解析为结构化数据
parse-angular-demo, 我们移动了&自己的服务器,这是不受支持的, 由于我们移动了 React,所以不再维护这个 repo面向大型AngularJS解析应用的快速入门样板用于构建大型。强大。无服务器的应用程序的一个强大的。战斗...
资源来自pypi官网。 资源全名:docker-parse-0.4.2.tar.gz
python库。 资源全名:parse-torrent-title-1.4.tar.gz
离线安装包,亲测可用