[iOS云存儲]leancloud網(wǎng)絡(luò)存儲集合

對于開發(fā)者來說,我們會使用大量數(shù)據(jù)來存儲將用到的數(shù)據(jù)。顯然對于新手,或者做獨(dú)立開發(fā)的童鞋來說,是必定會需要免費(fèi),并且不需要另聘維護(hù)人員的數(shù)據(jù)庫的,顯然我們常用的數(shù)據(jù)庫存儲方式會被摒棄掉,畢竟不是做大型項目,從資金上來說,使用專門的服務(wù)器都太過浪費(fèi)和奢侈,但是對于做獨(dú)立產(chǎn)品,以及中大型產(chǎn)品的開發(fā)來說,是肯定會需要建立自己的服務(wù)器的,畢竟有重要資源需要存儲。

數(shù)據(jù)存儲
1、數(shù)據(jù)庫存儲(缺點(diǎn):數(shù)據(jù)庫服務(wù)器需要一直運(yùn)行,并且需要維護(hù)人員)
2、PHP服務(wù)器(缺點(diǎn): 需要維護(hù)人員)
3、云數(shù)據(jù)庫存儲(缺點(diǎn):安全性比不上專門數(shù)據(jù)庫和PHP服務(wù)器的安全系數(shù))

上面提到的第三點(diǎn),就是我要分享的存儲方式。除此之外,還有其他的云存儲平臺,我選擇了leancloud的數(shù)據(jù)庫存儲,因為就目前來說他發(fā)展得蠻好,并且沒有出現(xiàn)過其他大問題。

關(guān)聯(lián)用戶表的創(chuàng)建

    //====================================================創(chuàng)建用戶信息==========================================
    //用戶信息必須唯一
    AVUser *user = [AVUser user];// 新建 AVUser 對象實例
    user.username = @"Bell";// 設(shè)置用戶名
    user.password =  @"ssa4f3434";// 設(shè)置密碼
    user.email = @"0o9sdsf7@qq.com";// 設(shè)置郵箱
    
   AVObject *theGAME = [[AVObject alloc] initWithClassName:@"TheGame"];       
   [theGAME setObject:@"0" forKey:@"Today_score"];
   [theGAME setObject:@"0" forKey:@"user_integral"];
   [theGAME setObject:@"Bell" forKey:@"playname"];
    
    [AVObject saveAllInBackground:@[user] block:^(BOOL succeeded, NSError *error) {
        if (error) {
            NSLog(@"創(chuàng)建失敗");
        }else{
          AVRelation *relation = [theGAME relationforKey:@"theuser"];
         [relation addObject:user];
         [theGAME saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
               if (succeeded) {
                 NSLog(@"關(guān)聯(lián)成功");
                 [self addpropertyWith:@"Bell"];
             }else{
                NSLog(@"關(guān)聯(lián)失敗");
              }
         }];

     }
    }];

以上的代碼,用于建立與用戶信息表相關(guān)聯(lián)的信息表。

這里需要注意的是千萬不要忘記創(chuàng)建好了表信息,要使用 saveInBackgroundWithBlock:回調(diào)一個BOOL類型的succeeded值。

由于以上的代碼有關(guān)聯(lián)兩個表的信息,所以我使用了兩個save

注意:這個AVObject saveAllInBackground:@[user] block:^(BOOL succeeded, NSError *error) 回調(diào),必須成功返回回調(diào)一個BOOL類型的succeeded值才能進(jìn)行下面的操作,并且一定要使用 【 saveAllInBackground】進(jìn)行回調(diào),Background后面跟數(shù)組,也就是表名

更新leancloud的方式是

 [self editinfoWithusername:更新的屬性字符串 daysocrce:更新的屬性字符串 integral:更新的屬性字符串];

在leancloud上面,我們存儲圖片、文件型的數(shù)據(jù),都會上傳到一個AVFile文件里面,下面一上傳一個圖片來舉個??

圖片/文件的上傳

  //  NSData *data = UIImageJPEGRepresentation([UIImage imageNamed:@"234.jpg"], 1.0);
    NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"10.png"]);
    AVFile *file = [AVFile fileWithName:@"thpic.png" data:data];
    [file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        NSLog(@"成功  %@", file.url);//返回一個唯一的 Url 地址
            if (succeeded) {
                                NSLog(@"資料上傳成功");
                            }else{
                                NSLog(@"上傳失敗");
                            }
    }];

1、將圖片轉(zhuǎn)換為數(shù)據(jù)UIImageJPEGRepresentation 這個屬性會要求設(shè)置一個壓縮的大小,建議設(shè)置為0.3; UIImagePNGRepresentation 壓縮出來的圖片會比JPEG要小一些,所以我采用了PNG形式的
2、AVFile *file = [AVFile fileWithName:@"隨便寫必須加上圖片后綴名" data:data];

如果上傳成功,你可以在leancloud的AVFile表里看到你剛才上傳的圖片地址,復(fù)制粘貼到瀏覽器,你就可以看到剛才上傳的圖片了,上傳成功會返回一個file.url值,而這個值就是你需要的獲取到的信息,你可以將它存儲在其他表里,從而在網(wǎng)絡(luò)請求的時候可以得到這個數(shù)據(jù)。

當(dāng)然leancloud也有基本的查詢語句,新的開發(fā)人員可以通過下面的代碼進(jìn)行網(wǎng)絡(luò)請求,以獲得存儲的數(shù)據(jù)

數(shù)據(jù)的獲取

    AVQuery *query = [AVQuery queryWithClassName:@"表名"];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        for (AVObject *obj in objects) {
            NSMutableDictionary *dic = obj.dictionaryForObject;
            [dic removeObjectForKey:@"className"];
            [dic removeObjectForKey:@"createdAt"];
            [dic removeObjectForKey:@"objectId"];
             [dic removeObjectForKey:@"updatedAt"];
            [dic removeObjectForKey:@"__type"];
            [self.dataarry addObject:dic];
            NSLog(@"%@",dic);
        }
        
    }];

以上是通過表名進(jìn)行查找。然后對獲取來的數(shù)據(jù)進(jìn)行操作

注意:我們獲取下來的是的objects類型的數(shù)據(jù),我們要將這個數(shù)據(jù)轉(zhuǎn)化為字典形式【使用代碼 NSMutableDictionary *dic = obj.dictionaryForObject;】
由于這樣獲取下來的數(shù)據(jù)有很多,看起來不會特別整潔,所以我將多余不需要的數(shù)據(jù)給移除掉字典了

條件查找數(shù)據(jù)

    AVQuery *query = [AVQuery queryWithClassName:@"表名"];
    [query whereKey:@"字段名" hasPrefix:@"字符串"];
        [query selectKeys:@[@"表名"]];
        query.limit = 1;//限制條數(shù)
        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            for (AVObject *avobject in objects) {
                NSMutableDictionary *dic = avobject.dictionaryForObject;
                [dic removeObjectForKey:@"className"];
                [dic removeObjectForKey:@"createdAt"];
                [dic removeObjectForKey:@"objectId"];
                [dic removeObjectForKey:@"updatedAt"];
                [dic removeObjectForKey:@"__type"];
                NSLog(@"%@",dic);
            }
        }];
 以上是leancloud網(wǎng)絡(luò)存儲的基本使用代碼,都特別實用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容