0

如何从保存的 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 是__NSArrayMcount=1 的类型类,它的内容是:

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

2 回答 2

1

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

我不熟悉,PFObject但我猜想-addObject:forKey:存储添加到与键关联的数组中的对象。由于您只添加了一个对象,因此结果数组中只有一个值。您可能想-setObject:forKey:改用。

于 2013-03-01T22:40:47.430 回答
0

凯文是正确的。-[PFObject addObject:forKey:] 用于将新元素插入到数组键中。这意味着您将数组插入到数组中。addObject:forKey: 当该对象的键可能受到竞争条件影响时很有用,即如果您在论坛对象上有一个评论数组,[post addObject:aComment forKey:@"comments"]确保当两个客户竞相更改 @"comments" 的值时将保存所有评论. 如果我做了类似的事情,情况就不会如此[post setObject:@[aComment] forKey:@"comments"]

您可以将代码编写为:

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

但在您的情况下,将您的 addObject:forKey: 行替换为 setObject:forKey: 可能同样容易:

于 2013-03-04T00:08:33.170 回答