如何在ios中使用parse执行PFRelation查询

时间:2014-10-21 06:45:27

标签: ios parse-platform relational-database

我在两个表之间创建了一个关系

LocationClass表在这个表中,我有一个列的位置图像与另一个表的关系,即。,Assets

![这是位置类图像,如果用户选择了locationName,需要获取locationImages(viewRelation)] [1]

资产表,它包含每个关系的图像现在我的查询是如何从关系数据库获取数据。这里如果用户选择一个位置意味着我需要为相关位置获取一组图像![这是我的资产表,这里需要根据locationClass表中的选定位置检索图像] [2]

直到现在,我已经完成了这种格式

PFQuery *queryObj = [PFQuery queryWithClassName:@"LocationClass"];
sharedDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];

// Run the query
[queryObj whereKey:@"locationImages" equalTo:[PFObject objectWithoutDataWithClassName:@"Assets" objectId:@"aAPzhdO4w6"]];

[queryObj findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error)
    {
        [locationArray addObjectsFromArray:objects];
        sharedDelegate.locationsArray = locationArray;
        [locationDropDown reloadData];
    }
}];

在我的位置数组中,单个对象包含

<__NSArrayM 0xaee4eb0>(
<LocationClass:ZtOP9voUak:(null)> {
    LocationId = WilliamsBurgId;
    LocationName = WilliamsBurg;
    locationImages = "<PFRelation: 0xaf53c30>(<00000000>.(null) -> Assets)";
}
)

1 个答案:

答案 0 :(得分:2)

从PFRelation对象传递数据的解决方案

    // should pass the main table name

    PFQuery *query = [PFQuery queryWithClassName:@"LocationClass"];
    // should pass object id for the selected row
    PFObject *getImageObject = [query getObjectWithId:@"need to pass object id from the maintable"];


    locationImagesArray = [[NSMutableArray alloc]init];

    // To acess the data from the relation object

    PFRelation *relationObj = [getImageObject relationForKey:@"locationImages"];
    PFQuery *query1 = [relationObj query];
    [query1 findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {

        [locationImagesArray addObjectsFromArray:results];
        for (int imgCount = 0; imgCount < [locationImagesArray count]; imgCount ++) {

            PFFile *getImage1 = [[locationImagesArray valueForKey:@"Image"] objectAtIndex:imgCount];
            [getImage1 getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error)
             {

                 if (imageData!=nil) {
                     UIImage *image = [UIImage imageWithData:imageData];
                     activityImage.image = image;

                     NSLog(@"location image output");

                     NSLog(@"location image output : %@", activityImage.image);

                 }
             }];

        }