Parse : is it possible to follow progress of PFObject upload

大憨熊 提交于 2019-12-25 03:16:40

问题


I have a PFObject containing a text and a PFFile.

PFObject *post = [PFObject objectWithClassName:@"Posts"];
post[@"description"] = self.Photodescription.text;
NSData *picture =  UIImageJPEGRepresentation(self.capturedPicture, 0.5f);
post[@"picture"] = [PFFile fileWithName:@"thumbnailPicture.png" data:picture];

I would like to get progress of upload in order to display a progression bar. The following function only works for PFFile.

[post[@"picture"] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    }progressBlock:^(int percentDone) {
        // Update your progress spinner here. percentDone will be between 0 and 100.
        NSLog(@"%i", percentDone);
    }];

Is there a way to do the same for a PFObject?


回答1:


Are you uploading a single object or an array of objects? Right now there is no progress for a single PFObject. For very large arrays of PFObjects I did create a category for uploading a series of PFObjects in the background with progress feedback, it works like the normal saveAlInBackground: except you specific the chunkSize (How many PFObjects to save at a time until complete) and give it a progress block handler which is calls each time a chunk is completed:

+(void)saveAllInBackground:(NSArray *)array chunkSize:(int)chunkSize block:(PFBooleanResultBlock)block progressBlock:(PFProgressBlock)progressBlock
{
    unsigned long numberOfCyclesRequired = array.count/chunkSize;
    __block unsigned long count = 0;
    [PFObject saveAllInBackground:array chunkSize:chunkSize block:block trigger:^(BOOL trig) {
        count++;
        progressBlock((int)(100.0*count/numberOfCyclesRequired));
    }];
}

+(void)saveAllInBackground:(NSArray *)array chunkSize:(int)chunkSize block:(PFBooleanResultBlock)block trigger:(void(^)(BOOL trig))trigger
{

    NSRange range = NSMakeRange(0, array.count <= chunkSize ? array.count:chunkSize);
    NSArray *saveArray = [array subarrayWithRange:range];
    NSArray *nextArray = nil;
    if (range.length<array.count) nextArray = [array subarrayWithRange:NSMakeRange(range.length, array.count-range.length)];
    [PFObject saveAllInBackground:saveArray block:^(BOOL succeeded, NSError *error) {
        if(!error && succeeded && nextArray){
            trigger(true);
            [PFObject saveAllInBackground:nextArray chunkSize:chunkSize block:block trigger:trigger];
        }
        else
        {
            trigger(true);
            block(succeeded,error);   
        }
    }];
}


来源:https://stackoverflow.com/questions/24010913/parse-is-it-possible-to-follow-progress-of-pfobject-upload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!