IOS - 从一对多关系中检索数据后出现问题

时间:2014-06-05 03:47:29

标签: ios objective-c parse-platform

我使用Parse.com来存储我的数据。这是我用来检索我的类数据的代码。

PFQuery *query = [PFQuery queryWithClassName:@"UserSettings"];
[query whereKey:@"belongsToUser" equalTo:[PFUser currentUser]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"Error: %@ %@",error, [error userInfo]);
    }
    else{
        //can't figure out how to extract the data from the objects NSArray that it was stored into above
    }
}];

因此,当检索到这些数据时,它将存储在NSArray对象中。该对象数组中有3个数据需要填充到3个单独的文本字段中。

我知道数据存在,因为如果我NSLog对象数组我可以看到数据。这是NSLog代码。

NSLog( @"%@", objects);

并返回此

"<UserSettings:2w12ebzirw:(null)> {
\n    belongsToUser = \"<PFUser:KttMAy9Sk3>\";
\n    companyAddress = \"1234 W. Peoria\";
\n    companyCity = Peoria;
\n    companyName = \"Adrian LLC\";\n}"

所以数据就在那里。我需要companyAddress,companyCity和companyName。我希望能够使用objectForKey选项,这样我就可以给它键#34; companyAddress&#34;然后回来&#34; 1234 W. Peoria&#34;。但是NSArray没有objectForKey选项。即使我尝试使用objectAtIndex我也会收到错误。这是我的objectAtIndex代码

NSLog( @"%@", [objects objectAtIndex:1]);

这是错误

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

我做错了什么?如何检索我的数据并将其分配到单独的文本字段?

2 个答案:

答案 0 :(得分:0)

错误实际上非常清楚。您记录了NSArray的输出,其中只有一个元素。然后你试着抓住第二个元素,它不存在。

[objects objectAtIndex:0]应该可以正常使用,或者更好,使用下标,你可以objects[0]

答案 1 :(得分:0)

感谢您回复rmaddy和Dima。我确实发现了这个问题。我确实知道数组是基于0的,当我调用0索引时,我得到了同样的错误。

我的问题是我没有意识到当parse返回我的查询时,它将它作为PFObject(它就像另一个数组)返回,并且PFObject被放置在我的NSArray对象的第一个索引中。所以它基本上是另一个数组的第一个索引中的数组。我必须做的是将我的对象NSArray的第一个索引分配给一个新的NSArray(我将它分配给NSDictionary)。

NSDictionary *settings = [objects lastIndex];

然后我就像往常一样使用/调用NSDictionary中的数据。