来自PFObject的NSArray值

时间:2013-03-01 22:32:24

标签: ios parse-platform

如何从保存的PFOBject中加载NSArray值?

保存:

NSMutableArray *arr = [[NSMutableArray alloc]init];

   for (MyParseInformation *obj in results) {
       [arr addObject:obj.correct]; // correct is NSNumber
    }
    [pfobject addObject:arr forKey:@"results"];
}

[pfobject saveEventually:^(BOOL succeeded, NSError *error) {

查询:

PFQuery *query = [PFQuery queryWithClassName:className];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if(!error){
         for (PFObject *obj in objects) {

            id str = [obj valueForKey:@"results"] ;

...... id为__NSArrayM类型类,count = 1,其内容为:

(
        (
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        1,
        1,
        1,
        0,
        1
    )
) 

2 个答案:

答案 0 :(得分:1)

您的str对象是NSArray*,其中包含一个对象,该对象本身就是NSArray*,可能是您想要的值。

我不熟悉PFObject,但我猜测-addObject:forKey:存储在与键关联的数组中添加的对象。由于您只添加了一个对象,因此生成的数组中只有一个值。您可能希望改为使用-setObject:forKey:

答案 1 :(得分:0)

凯文是对的。 - [PFObject addObject:forKey:]用于将新元素插入数组键。这意味着您将数组插入到数组中。 addObject:forKey:当该对象的密钥可能受竞争条件影响时非常有用,即如果您在论坛对象上有一个注释数组,[post addObject:aComment forKey:@"comments"]可确保在两个客户竞争更改值时保存所有注释@“评论”。如果我做过像[post setObject:@[aComment] forKey:@"comments"]这样的事情,那就不是这样了。

您可以将代码编写为:

for (MyParseInformation *obj in results) {
   [pfobject addObject:obj.correct]; // correct is NSNumber
}

但是在你的情况下,替换你的addObject可能同样容易:forKey:line with setObject:forKey: