我正在运行一个没有问题的查询,这是我的代码:
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
?谢谢!
答案 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];
}