2013-06-06 36 views
1

我正在使用以下查詢從Parse.com類獲取一些數據。從Parse.com類和NSArray中提取數據

我想要做的是從NSArray rateObjects中提取Rating對象。我會如何去做這件事?

感謝您的幫助

PFQuery *rateQuery = [PFQuery queryWithClassName:@"Rating"]; 
     [rateQuery whereKey:@"photo" equalTo:self.photo]; 
     [rateQuery includeKey:@"photo"]; 

    rateQuery.cachePolicy = kPFCachePolicyNetworkElseCache; 
    rateQuery.limit = 20; 

    [rateQuery findObjectsInBackgroundWithBlock:^(NSArray *rateObjects, NSError *error) 
    { 
     if(!error) 
     { 
      NSLog(@"rateObject %@", rateObjects); 

     } 
    } 
    ]; 

這裏的NSLog輸出:

rateObject (
    "<Rating:w9ENTO29mA:(null)> {\n ACL = \"<PFACL: 0x1e0a5380>\";\n Rating = 4;\n fromUser = \"<PFUser:uV2xu0c3ec>\";\n photo = \"<Photo:Rv4qqrHUPr>\";\n toUser = \"<PFUser:uV2xu0c3ec>\";\n user = \"<PFUser:uV2xu0c3ec>\";\n}", 
    "<Rating:t3pjtehYR0:(null)> {\n ACL = \"<PFACL: 0x1e0f9f90>\";\n Rating = 5;\n fromUser = \"<PFUser:uV2xu0c3ec>\";\n photo = \"<Photo:Rv4qqrHUPr>\";\n toUser = \"<PFUser:uV2xu0c3ec>\";\n user = \"<PFUser:uV2xu0c3ec>\";\n}" 
) 

回答

4

NSArray將包含PFObjects,您可以以類似的方式到詞典治療。在上面運行的查詢中,您收到了兩個評級對象。如果這不是你想要的(你只需要一個對象),那麼你可能想重新考慮你如何查詢你的數據。

假設在分析你Rating類包含一個名爲Rating你訪問它像這樣的關鍵:

[rateObject objectForKey:@"Rating"]

您也可以使用新的現代的文字語法,如果你喜歡 - rateObject[@"rating"]

你需要遍歷數組來查看所有已返回的評級對象,因此您可能會得到如下結果:

for (id item in rateObjects) { 
    int ratingVal = [[item objectForKey:@"Rating"] intValue]; 
    NSLog(@"Rating: %d", ratingVal); 
} 

你可能會發現Parse的iOS documentation有幫助 - 如果你不確定上面的代碼實際上做了什麼,你可能想要回顧一下數組以及它們在Objective-C中的工作方式。

+0

感謝您的帖子。使用以下我得到輸出「Rating:0」。然而,在NSArray輸出中,我得到了Rating = 4。NSDictionary * rateObject; int ratingVal = [[rateObject objectForKey:@「Rating」] intValue]; NSLog(@「Rating:%d」,ratingVal); – hanumanDev

+1

代碼中有一個錯字 - 抱歉。我不小心讓你在'rateObjects'上調用'objectForKey',它應該是'item'。再次嘗試使用修改後的版本(我已更正了我的答案) – lxt

+0

完美地工作!非常感謝你的幫助。有一段時間我被困住了。 :) – hanumanDev

4

嘗試使用此:

[rateQuery findObjectsInBackgroundWithBlock:^(NSArray *rateObjects, NSError *error) 
{ 
    if(!error) 
    { 
     NSMutableArray *data = [[NSMutableArray alloc]init]; 
     [data addObjectsFromArray:rateObjects]; 
     NSArray *rating_data = [data valueForKey:@"Rating"]; 
     NSLog(@"%@",[rating_data objectAtIndex:0]); 

    } 
} 
]; 

我希望這會幫助你。