将查询结果从Parse传递到NSArray iOS

时间:2013-05-30 14:10:14

标签: ios nsarray parse-platform

我正在运行一个没有问题的查询,这是我的代码:

PFQuery *postQuery = [PFQuery queryWithClassName:@"class"];
[postQuery whereKey:@"hasRelationship" equalTo:[PFUser currentUser]];
// Run the query
[postQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        //Save results and update the table
        group = [objects valueForKey:@"groupArray"];
     }
}

结果很好,组控制台打印如下:

(
("Register one",
"Register two",
"Register three",
"Register four")
)

但是我需要一个长度为4而不是1的数组。每次我将结果传递给NSString“可变副本”,就像崩溃一样:

( NSString *s = (NSString *)[group objectAtIndex:0];
NSString * text = (NSString *)[s mutableCopy];) 

这是错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent ***

如何将对象内的元素变为长度为4的NSArray?谢谢!

2 个答案:

答案 0 :(得分:0)

简单回答这个问题。您的查询返回了一个结果数组,其中包含四个对象。转换不会改变基本对象的类型,它只是欺骗编译器思考它处理特定对象的类。它实际上并没有改变那个类。

在这个特殊的例子中,它很简单。当前响应中的索引0处已有一个数组:

NSArray * allGroups = group [0];

这应该在一个数组中包含所有四个字符串,可以枚举它们做任何你想做的事情。

答案 1 :(得分:0)

查看他们的示例代码,了解如何使用数组objects。所以改变你的if statement使用它:

if (!error) {
    // The find succeeded.
    NSLog(@"Successfully retrieved %d scores.", objects.count);
    // Do something with the found objects
    for (PFObject *object in objects) {
        NSLog(@"%@", object.objectId);
        // add to your array here
    }
  } else {
    // Log details of the failure
    NSLog(@"Error: %@ %@", error, [error userInfo]);
  }
}

或简单的事情:

if (!error) {
    // copy the array
    [group addObjectsFromArray:objects];
}
相关问题