我使用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]'
我做错了什么?如何检索我的数据并将其分配到单独的文本字段?
答案 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中的数据。