我在Parse.com的iOS后端构建一个应用程序,它具有简单的关注/跟随逻辑。即我希望用户能够找到其他用户并关注他们的个人资料。我目前可以使用常规PFQuery
检索数据库中的所有用户。点击用户个人资料图片""那个人。设置数据,以便名为isFollowing的数组中添加了一个唯一对象,用户可以选择关注每个新对象。它由用户objectId
添加。
但是,我在这里碰到了路;对于一个单独的屏幕,我只想返回我作为用户关注的人数。这是访问数据的查询:
- (void)viewDidAppear:(BOOL)animated
{
PFQuery *followingQuery = [PFUser query];
[followingQuery whereKey:@"objectId" equalTo:[PFUser currentUser].objectId];
[followingQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error)
{
NSLog(@"User test: %@", [objects valueForKey:@"isFollowing"]);
PFQuery *imagesQuery = [PFUser query];
[imagesQuery whereKey:@"objectId" containedIn:[objects valueForKey:@"isFollowing"]];
[imagesQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (!error)
{
NSLog(@"Username? %@", [objects valueForKey:@"username"]);
}
else
{
NSLog(@"Something went wrong. %@", error);
}
}];
}
else
{
NSLog(@"Something went wrong: %@", error);
}
}];
[super viewDidAppear:animated];
}
目前,user test: %@
提供输出:
2014-07-28 10:17:58.537 YouStreamSport[11276:60b] User test: (
(
bHul1vkkmB,
brsN8PRUBO
)
)
但是,当我运行objects.count
时,它会返回一个对象。因此,我无法遍历数组对象来查找并返回正确的配置文件图像。由于数组对象返回1
,但数组本身有2
个对象,如何访问该数组中的项?任何使用[objectAtIndex: ...]
访问的尝试都会导致崩溃。
感谢提前输入。
答案 0 :(得分:2)
我不确定如何访问数组中数组中的单个项目,但是由于@Droppy的帮助,我能够解决问题。这是我现在使用的代码:
- (void)viewDidAppear:(BOOL)animated
{
PFQuery *followingQuery = [PFUser query];
[followingQuery whereKey:@"objectId" equalTo:[PFUser currentUser].objectId];
[followingQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error)
{
self.array = [objects valueForKey:@"isFollowing"];
NSLog(@"User test: %@", self.array);
for (int i = 0; i <= self.array.count; i++)
{
NSLog(@"User %d: %@", i, [[[objects valueForKey:@"isFollowing"] objectAtIndex:0] objectAtIndex:i]);
}
}
else
{
NSLog(@"Something went wrong: %@", error);
}
}];
[super viewDidAppear:animated];
}
结果输出如下:
2014-07-28 10:53:16.155 appName[11416:60b] User 0: bHul1vkkmB
2014-07-28 10:53:16.156 appName[11416:60b] User 1: brsN8PRUBO
谢谢!
答案 1 :(得分:1)
如上所述,您只会显示一个对象用户名。而不是尝试通过索引访问它们尝试迭代结果如下所示。我还建议不要对内部和外部查询使用变量对象。试试这个:
[imagesQuery findObjectsInBackgroundWithBlock:^(NSArray *myObjects, NSError *error)
{
if (!error){
if (myObjects.count) {
for (PFObject *item in myObjects){
NSLog(@"Username: %@", [item valueForKey:@"isFollowing"]);
}
}
}else{
NSLog(@"Something went wrong. %@", error);
}
}];