AVOS Cloud 学习笔记(二) 功能总结(What it can do?)

AVOS Cloud 学习笔记(一)   功能总结(What it can do?)

第一章、对象存储

  1. 对象新建、保存、更新、删除和检索

    1 //创建新对象,根据类名
    2 AVObject *gameScore = [AVObject objectWithClassName:@"GameScore"];
    3 [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
    4 [gameScore setObject:@"Steve" forKey:@"playerName"];
    5 [gameScore setObject:[NSNumber numberWithBool:NO] forKey:@"cheatMode"];
    6 [gameScore save];
    1 //保存对象到服务器
    2 [gameScore save];
    3 //后台保存
    4 [gameScore saveInBackground];
    5 [gameScore saveInBackgroundWithBlock:^(BOOL successed, NSError* error){/*do somthing*/}];e
    1 //更新
    2 [gameScore refresh]
    1 //删除对象
    2 [gameScore deleteInBackground];
    3 [gameScore deleteInBackgroundWithBlock:...];
    4 [gameScire delete]//不推荐
    1 //如果有objectId的话
    2 AVQuery *query = [AVQuery queryWithClassName:@"GameScore"];
    3 AVObject *gameScore = [query getObjectWithId:@"51a90302e4b0d034f61623b5"];
    4 //访问对象的属性
    5 int score = [[game Score objectForKey:"score"]intValue];
  2. 计数器和数组

    1 //计数器
    2 [gameScore incrementKey:@"score"];
    3 [gameScore saveInBackground];
    4 //数组 添加元素到数组末尾
    5 [gameScore addOject:"100" forKey:"some"];
    6 //添加元素到对应位置,如果字段不存在,就创建
    7 [gameSocre addUniqueObject:""forKey"ss"];
    8 //移除
    9 [gameScore removeObject: forKey:];
  3. 对象离线存储和离线情况下从缓存加载

     1 // Create the object.
     2 AVObject *gameScore = [AVObject objectWithClassName:@"GameScore"];
     3 [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
     4 [gameScore setObject:@"Sean Plott" forKey:@"playerName"];
     5 [gameScore setObject:[NSNumber numberWithBool:NO] forKey:@"cheatMode"];
     6 [gameScore setObject:[NSArray arrayWithObjects:@"pwnage", @"flying", nil] forKey:@"skills"];
     7 [gameScore saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
     8
     9     [gameScore setObject:[NSNumber numberWithBool:YES] forKey:@"cheatMode"];
    10     [gameScore setObject:[NSNumber numberWithInt:1338] forKey:@"score"];
    11     [gameScore saveEventually];
    12 }];
    AVQuery *query = [AVQuery queryWithClassName:@"GameScore"];
    query.cachePolicy = kPFCachePolicyNetworkElseCache;
    /*
    kPFCachePolicyIgnoreCache 查询行为不从缓存中加载,也不会将结果保存到缓存中。
    kPFCachePolicyIgnoreCache 是默认的缓存策略。
    kPFCachePolicyCacheOnly    查询行为会忽略网络状况,只从缓存中加载。如果没有缓存的结果,这个策略会导致一个 AVError
    kPFCachePolicyCacheElseNetwork -- 查询行为首先尝试从缓存中加载,如果加载失败, 它会通过网络加载结果。如果缓存和网络中获取的行为都失败了,会有一个 AVError
    kPFCachePolicyNetworkElseCache -- 查询行为首先尝试从网络中加载,如果加载失败, 它会从缓存中加载结果。如果缓存和网络中获取的行为都失败了,会有一个 AVError
    kPFCachePolicyCacheThenNetwork -- 查询首先从缓存中加载,然后从网络加载。在这种情况下, 回调函数会被调用两次,第一次是缓存中的结果,然后是从网络获取的结果。因为它在不同的时间返回两个结果,这个缓存策略不能和 findObjects 同时使用。
    */
    //设置缓存有效期
    query.maxCacheAge = 24*3600;
    
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
      if (!error) {
        // Results were successfully found, looking first on the
        // network and then on disk.
      } else {
        // The network was inaccessible and we have no cached data for
        // this query.
      }
    }];
    
    // Then, elsewhere in your code...
    AVQuery *query = [AVQuery queryWithClassName:@"GameScore"];
    query.cachePolicy = kPFCachePolicyNetworkElseCache;
    [query findObjectsInBackgroundWithTarget:self
                                    selector:@selector(findCallback:error:)];
  4. 关系型数据

     1 //1对1 对象关联
     2 // Create the post
     3 AVObject *myPost = [AVObject objectWithClassName:@"Post"];
     4 [myPost setObject:@"I‘m Smith" forKey:@"title"];
     5 [myPost setObject:@"Where should we go for lunch?" forKey:@"content"];
     6
     7 // Create the comment
     8 AVObject *myComment = [AVObject objectWithClassName:@"Comment"];
     9 [myComment setObject:@"Let‘s do Sushirrito." forKey:@"content"];
    10
    11 // Add a one-one relation between the Post and Comment
    12 [myComment setObject:myPost forKey:@"parent"];
    13
    14 // This will save both myPost and myComment
    15 [myComment saveInBackground];
    16
    17 //也可以不要对象,用objectId关联
    18 // Add a relation between the Post with objectId "51a902d3e4b0d034f6162367" and the comment
    19 [myComment setObject:[AVObject objectWithoutDataWithClassName:@"Post" objectId:@"51a902d3e4b0d034f6162367"]
    20               forKey:@"parent"];
    21
    22 //n对n
    23 AVUser *user = [AVUser currentUser];
    24 AVRelation *relation = [user relationforKey:@"likes"];
    25 [relation addObject:post];
    26 [user saveInBackground];
    27 [relation removeObject:post];

第二章、数据查询

第三章、ACL权限控制

第四章、文件

第五章、用户

第六章、地理位置

第七章、调用云代码

第八章、消息推送

第九章、SNS组件

第十章、事件流

第十一章、反馈

第十二章、应用内搜索

第十三章、应用间数据绑定

AVOS Cloud 学习笔记(二) 功能总结(What it can do?),布布扣,bubuko.com

时间: 2024-10-08 02:48:56

AVOS Cloud 学习笔记(二) 功能总结(What it can do?)的相关文章

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

加壳学习笔记(二)-汇编基础

7.简单的汇编语法:   堆栈平衡  PUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPAADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构

在angular中有一个特别为RESTful架构而定制的服务,是在$http的基础上进行了封装. 但是为了学习,我们先看看用直接$http是如何构建RESTful架构的: 假设有一个银行卡的列表.需要的功能有: 可以通过id来获取用户123的指定id的卡     'GET'  'card/user/123/id' 可以获取用户123的所有的银行卡             'GET'  'card/user/123' 可以更新用户123的指定id的卡                'POST' '

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在

APUE 学习笔记(二) 文件I/O

1. 文件I/O 对于内核而言,所有打开的文件都通过文件描述符引用,内核不区分文本文件和二进制文件 open函数:O_RDONLY  O_WRONLY  O_RDWR create函数: close函数:关闭一个文件时还会释放该进程加在该文件上的所有记录锁 lseek函数:显式地为一个打开的文件设置其偏移量 每个打开的文件都有一个与其相关联的 "当前文件偏移量",用以度量从文件开始处计算的字节数,通常,读.写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数 文件偏移量可以大于

《SQL必知必会》学习笔记二)

<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语句,但是实际应用中的业务逻辑往往会非常复杂,所以会用到一些比较复杂的查询,如子查询,联合查询. 1.子查询 当一个查询是另一个查询的条件时,称为子查询.但是说到子查询又不的不说它与嵌套查询两者的区别,下面一张图来说明 下面再用一条sql语句来说明他们的关系. 其中在查询中又分为嵌套子查询和相关子查询,他们之间

NFC学习笔记二——Libnfc简介与安装

一直想把自己对过的英文文章做一下翻译记录下来,趁着学习NFC,现将libnfc首页的对libnfc介绍和在不同操作系统上对libnfc安装的文章做一下翻译,一方面提高一下自己的英语,另一方面学习一下libnfc. 原文地址:http://nfc-tools.org/index.php?title=Libnfc 公共平台独立的近场通讯(NFC)库 libnfc是GNU公共许可正下发布的第一个免费的底层的NFC开发包和编程API.它对任何人事完全免费和公开的.这个列表显示了libnfc支持的功能.l