I m implementing the concept of sectioned tableview and struck at a particular point. I have a NSMutableArray with 2 objects like this:
<__NSArrayI 0xabf8c00>(
{
City = "SanFransisco ";
Latitude = "28.602704";
Longitude = "-81.430760";
State = California;
},
{
City = Orlando;
Latitude = "28.49379";
Longitude = "-81.474251";
State = Florida;
},
)
,
<__NSCFArray 0xab38ec0>(
{
geometry = {
location = {
lat = "37.789632";
lng = "-122.417004";
};
};
name = "St. Francis Memorial Hospital";
vicinity = "900 Hyde Street, San Francisco";
},
{
geometry = {
location = {
lat = "37.794363";
lng = "-122.395784";
};
};
name = "St Memorial Hospital";
vicinity = "5 Embarcadero Center, San Francisco";
},
{
geometry = {
location = {
lat = "37.788297";
lng = "-122.409653";
};
};
name = "Global Memorial Hospital";
vicinity = "490 Post Street #520, San Francisco";
},
)
I m loading these 2 objects in two sections of tableView. But, I couldnot get how to compare and take in NSMutableDictionary for each key(city,latitude,longitude)of fist object and lat,lng,vicinity of second object. I have done like this but Im getting error : **SIGABRT error**
EDIT :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSMutableArray *array = [listOfItems objectAtIndex:indexPath.section];
int section=indexPath.section;
if(section==0)
{
for (int i=0;i<[array count];i++)
{
cell.textLabel.text = [[array objectAtIndex:i] objectForKey:@"City"] ;
cell.textLabel.tag=3;
cell.textLabel.font=[UIFont boldSystemFontOfSize:12];
NSString *lat=[NSString stringWithFormat:@"%@",[[array objectAtIndex:i] objectForKey:@"Latitude"]];
UILabel *latitude = [[UILabel alloc]initWithFrame:CGRectMake(10, 50, 320, 10)];
latitude .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
[latitude setTextAlignment:UITextAlignmentLeft];
latitude.text=[NSString stringWithFormat:@"%@",lat];
latitude.tag=1;
[cell addSubview:latitude ];
latitude.hidden=YES;
[latitude release];
NSString *lng=[NSString stringWithFormat:@"%@",[[array objectAtIndex:i] objectForKey:@"Longitude"]];
UILabel *longitude = [[UILabel alloc]initWithFrame:CGRectMake(10, 80, 320, 10)];
longitude .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
[longitude setTextAlignment:UITextAlignmentLeft];
longitude.text=[NSString stringWithFormat:@"%@",lng];
longitude.tag=2;
[cell addSubview:longitude ];
longitude.hidden=YES;
[longitude release];
return cell;
}
}
if(section==1)
{
for (int i=0;i<[array count];i++)
{
cell.textLabel.text =[[array objectAtIndex:i] objectForKey:@"name"] ;
cell.textLabel.lineBreakMode=UILineBreakModeWordWrap;
cell.textLabel.numberOfLines=0;
cell.textLabel.font=[UIFont boldSystemFontOfSize:12];
cell.textLabel.tag=3;
NSMutableDictionary * location = [[[array objectAtIndex:indexPath.row]objectForKey:@"geometry"]objectForKey:@"location"];
NSString * lat = [location objectForKey:@"lat"];
NSString * lng = [location objectForKey:@"lng"];
UILabel *latitude = [[UILabel alloc]initWithFrame:CGRectMake(10, 80, 320, 10)];
latitude .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
[latitude setTextAlignment:UITextAlignmentLeft];
latitude.text=[NSString stringWithFormat:@"%@",lat];
latitude.tag=1;
[cell addSubview:latitude ];
latitude.hidden=YES;
[latitude release];
UILabel *longitude = [[UILabel alloc]initWithFrame:CGRectMake(10, 85, 320, 10)];
longitude .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
[longitude setTextAlignment:UITextAlignmentLeft];
[longitude setText:[NSString stringWithFormat:@"%@",lng]];
longitude.tag=2;
[cell addSubview:longitude ];
longitude.hidden=YES;
[longitude release];
NSString *vicinity1 = [[array objectAtIndex:indexPath.row]objectForKey:@"vicinity"];
UILabel *vicinity = [[UILabel alloc]initWithFrame:CGRectMake(10, 45, 320, 10)];
vicinity .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
[vicinity setTextAlignment:UITextAlignmentLeft];
vicinity.text=[NSString stringWithFormat:@"%@",vicinity1];
vicinity.tag=4;
[cell addSubview:vicinity ];
vicinity.hidden=YES;
[vicinity release];
return cell;
}
}
}
Where I m going wrong this time?
By your error I understand that your variable dictionary is not actually a dictionary but an array.
try using this :
NSMutableArray *array = [listOfItems objectAtIndex:indexPath.row];
cell.textLabel.text = [[array objectAtIndex:0] objectForKey:@"City"];
If this returns something(or some name) maybe you can change your logic accordingly and get the desired result.
Let me know if it works :)
EDIT :
int section=indexPath.section;
if(section==0)
{
NSMutableArray *array = [listOfItems objectAtIndex:indexPath.row];
for (int i=0;i<[array count];i++)
{
cell.textLabel.text = [[array objectAtIndex:i] objectForKey:@"City"] ;
cell.textLabel.tag=3;
....
indexPath.section will always return 0
Try this :)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.