Reputation: 19946
//initialize the people data list
- (void)initializePeopleListFromJson:(CLLocationCoordinate2D)coordinate auraId:(NSString *)auraId
{
//initialize the NSMutableArray list
self.peopleList = [[NSMutableArray alloc] init];
//retrieve the coordinate of myself
//NSString *myCoordinate = [NSString stringWithFormat:@"%f,%f", coordinate.latitude, coordinate.longitude];
NSString *myCoordinate = @"31.2,121.6";
NSString *url = [NSString stringWithFormat:@"%@%@%@%@", @"http://services.portaura.mobi/AuraMesh/auraFinder/findPeoples?ll=", myCoordinate, @"&source=tencent,netease,kaixin&myAuraId=", auraId];
NSLog(@"*********** %@", url);
//retrieve the people list from web service
NSDictionary* result = [NSDictionary dictionaryWithContentsOfJSONURLString:url];
NSArray *peopleListFromJson = [result objectForKey:@"data"];
// NSLog(@"peopleList: %@", peopleListFromJson);
People *people;
UserProfile *userProfile;
NSDictionary *geoFromJson;
NSDictionary *profileFromJson;
for (NSDictionary *peopleFromJson in peopleListFromJson)
{
people = [[People alloc] init];
userProfile = [[UserProfile alloc] init];
people.foreignId = [peopleFromJson objectForKey:@"foreignId"];
people.id1 = [peopleFromJson objectForKey:@"id"];
people.isFavorited = [peopleFromJson objectForKey:@"isFavorited"];
people.lastActiveTime = [peopleFromJson objectForKey:@"lastActiveTime"];
people.lastActivity = [peopleFromJson objectForKey:@"lastActivity"];
people.lastPlace = [peopleFromJson objectForKey:@"lastPlace"];
people.source = [peopleFromJson objectForKey:@"source"];
NSLog(@"AAAAAAAA %@", [peopleFromJson objectForKey:@"foreignId"]);
//process geo
geoFromJson = [[NSDictionary alloc] init];
geoFromJson = [peopleFromJson objectForKey:@"geo"];
CLLocationCoordinate2D coordinate;
coordinate.latitude = [[geoFromJson objectForKey:@"lat"] floatValue];
coordinate.longitude = [[geoFromJson objectForKey:@"lng"] floatValue];
people.geo = coordinate;
people.distance = [geoFromJson objectForKey:@"distance"];
//process profile
profileFromJson = [[NSDictionary alloc] init];
profileFromJson = [peopleFromJson objectForKey:@"profile"];
people.avatar = [profileFromJson objectForKey:@"avatar"];
people.gender = [profileFromJson objectForKey:@"gender"];
people.location = [profileFromJson objectForKey:@"location"];
people.screenName = [profileFromJson objectForKey:@"screenName"];
people.signature = [profileFromJson objectForKey:@"sigunature"];
//people.userProfile = userProfile;
[self addPeople:people];
}
}
it give me the [__NSCFString objectForKey:]: unrecognized selector sent to instance 0x1808d0,can you give some advice
json like :
{"status":0,"data":{"list":[{"foreignId":"8827857641648129226","geo":{"distance":1359,"lat":31.20926508184017,"lng":121.59068046014856},"id":"netease_8827857641648129226","isFavorited":false,"lastActiveTime":"2012-05-19T20:26:47Z","lastActivity":"Goal http://126.fm/kFEKl","lastPlace":"","profile":{"avatar":"http://oimagea3.ydstatic.com/image?w=48&h=48&url=http%3A%2F%2Fmimg.126.net%2Fp%2Fbutter%2F1008031648%2Fimg%2Fface_big.gif","gender":0,"location":"","screenName":"4671784460","sigunature":"","tags": []},"source":"netease"}......
Upvotes: 1
Views: 7268
Reputation: 19946
i have solved the problem,i cannot think the problem is easy,maybe some people only know the cause is the object is NSString not NSDir,but the real problem is depend on json "style",sometimes my code is correct,but for other json is not correct for example my question json. so solved is :
if ( ![peopleListFromJson isKindOfClass:[NSArray class]] && peopleListFromJson!=nil) {
peopleListFromJson =[NSArray arrayWithObject:peopleListFromJson];
}
because i used
NSDictionary* result = [NSDictionary dictionaryWithContentsOfJSONURLString:url];
NSArray *peopleListFromJson = [result valueForKeyPath:@"data.list"];
so peopleListFromJson!=nil is impotent
Upvotes: 0
Reputation: 8109
check ur variable class peopleFromJson
it might not be a dictionary at the moment you are calling objectForKey.
put this statement as first line in ur for
loop
NSLog(@"%@",NSStringFromClass([peopleFromJson class]));
Upvotes: 8