码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-23 08:29:54      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   tar   ext   

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

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

标签:style   class   blog   code   tar   ext   

原文地址:http://www.cnblogs.com/lizhengfeng/p/3799121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!