【问题标题】:Extracting data from a Parse.com class and into an NSArray从 Parse.com 类中提取数据并放入 NSArray
【发布时间】:2013-06-06 18:25:40
【问题描述】:

我正在使用以下查询从 Parse.com 类中获取一些数据。

我想做的是从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}"
)

【问题讨论】:

    标签: ios objective-c nsarray parse-platform


    【解决方案1】:

    您的NSArray 将包含PFObjects,您可以像对待字典一样对待它。在上面运行的查询中,您收到了两个评级对象。如果这不是您想要的(您只想要一个对象),您可能需要重新审视您查询数据的方式。

    假设您在 Parse 中的 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 中的工作方式。

    【讨论】:

    • 感谢您的帖子。使用以下内容,我得到输出“Rating:0”。但是在 NSArray 输出中,我得到 Rating = 4。 NSDictionary *rateObject; int ratingVal = [[rateObject objectForKey:@"Rating"] intValue]; NSLog(@"评分:%d", ratingVal);
    • 代码中有错字 - 抱歉。我不小心让你在rateObjects 上打电话给objectForKey,应该是item。用修改后的版本再试一次(我已经更正了我的答案)
    • 效果很好!非常感谢你的帮助。我被困了一段时间。 :)
    【解决方案2】:

    尝试使用这个:

    [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]);
    
         }
     }
    ];
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2018-04-23
      • 2013-08-06
      • 2010-09-30
      相关资源
      最近更新 更多