2015-11-05 50 views
0

我可以使用下面的代码获取图像。但是,这是首先加载所有图像。我怎样才能得到一个随机图像?我尝试了很多方法,但是我做不到。请修复代码并帮助我。如何从Parse for iOS获取一张随机图像?

func loadData() { 

    let query: PFQuery = PFQuery(className: "Posts1") 
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 

     if (error == nil){ 
      for object in objects! as [PFObject]{ 

       let imagefile = object["imageFile"] as! PFFile? 

       imagefile?.getDataInBackgroundWithBlock({ 

        (imageData, error) -> Void in 
        if (error == nil) { 
         self.cameraView.image = UIImage(data:imageData!) 
        } 
       }) 
      } 
     } 
     else{ 
     } 
    } 
} 

回答

0

由于此线

for object in objects! as [PFObject] 

装置采取对象并执行for体描述的动作。取而代之的是随机对象,有很多的答案可以帮助你,就像这样一个Pick a random element from an array

0

没有办法从PFQuery中获得随机对象,但你可以像这样伪造:

PFQuery *query = [PFQuery queryWithClassName:@"Posts1"]; 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSInteger count = [query countObjects]; 
    query.skip = arc4random_uniform(count); 
    PFObject *object = [query getFirstObject]; 
    PFFile *file = object[@"imageFile"]; 
    NSData *data = [file getData]; 
    UIImage *image = [UIImage imageWithData:data]; 
    // Do whatever you want with the image 
    // You should probably return to the main queue here 
});