我不知道为什么索引处的对象失败了。我想知道这里是否有人知道如何纠正这个问题。失败的具体代码是NSURL *imgURLLogo = [NSURL URLWithString:[[firstMessage objectForKey:@"message"] objectForKey:@"photo"]];
底部的空载图像,任何人都可以帮我解决这个问题吗?
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// Configure the cell...
NSMutableArray *arrMessages = [objectsForContacts objectForKey:[arrayOfUsers objectAtIndex:indexPath.row]];
NSMutableDictionary *firstMessage = [arrMessages objectAtIndex:0];
UILabel *lblFriendName = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, 200, 20)];
lblFriendName.textAlignment = UITextAlignmentLeft;
lblFriendName.backgroundColor = [UIColor clearColor];
lblFriendName.textColor = [UIColor blackColor];
lblFriendName.font = [UIFont boldSystemFontOfSize:16.0];
lblFriendName.text = [[firstMessage objectForKey:@"message"] objectForKey:@"toname"];
[cell.contentView addSubview:lblFriendName];
UILabel *lblLastMessage = [[UILabel alloc] initWithFrame:CGRectMake(10, 25, 280, 35)];
lblLastMessage.textAlignment = UITextAlignmentLeft;
lblLastMessage.numberOfLines = 2;
lblLastMessage.backgroundColor = [UIColor clearColor];
lblLastMessage.textColor = [UIColor blackColor];
lblLastMessage.font = [UIFont systemFontOfSize:13.0];
lblLastMessage.text = [[firstMessage objectForKey:@"message"] objectForKey:@"text"];
[cell.contentView addSubview:lblLastMessage];
UILabel *lblTime = [[UILabel alloc] initWithFrame:CGRectMake(10, 60, 280, 20)];
lblTime.textAlignment = UITextAlignmentLeft;
lblTime.backgroundColor = [UIColor clearColor];
lblTime.textColor = [UIColor blackColor];
lblTime.font = [UIFont systemFontOfSize:13.0];
lblTime.text = [NSString stringWithFormat:@"%@",[[[firstMessage objectForKey:@"message"] objectForKey:@"postedat"] substringToIndex:16]];
[cell.contentView addSubview:lblTime];
cell.backgroundColor = appDelegate.pref_TableViewCellColorValue;
// cell.textLabel.text = [[dict objectForKey:@"post"] objectForKey:@"title"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
NSMutableDictionary *dict = [[objectsForCharacters objectForKey:[arrayOfCharacters objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
UIImageView *imgUser = [[UIImageView alloc] initWithFrame:CGRectMake(5, 1, 48, 48)];
if (![dict objectForKey:@"cellimage"]) {
UIImage *img = [appDelegate imageByScalingProportionallyToSize:CGSizeMake(48, 48) img:[UIImage imageNamed:@"smily.png"]];
imgUser.image = img;
NSMutableArray *arrObject = [[NSMutableArray alloc] init];
[arrObject addObject:arrMessages];
[arrObject addObject:imgUser];
[NSThread detachNewThreadSelector:@selector(loadImage:) toTarget:self withObject:arrObject];
} else {
UIImage *img = [appDelegate imageByScalingProportionallyToSize:CGSizeMake(48, 48) img:[dict objectForKey:@"cellimage"]];
imgUser.image = img;
}
[cell.contentView addSubview:imgUser];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.backgroundColor = appDelegate.pref_TableViewCellColorValue;
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 80.0;
}
- (void)loadImage :(NSMutableArray *)arrObjects {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSMutableDictionary *firstMessage= [arrObjects objectAtIndex:0];
NSURL *imgURLLogo = [NSURL URLWithString:[[firstMessage objectForKey:@"message"] objectForKey:@"photo"]];
NSLog(@"%@",[[firstMessage objectForKey:@"message"] objectForKey:@"photo"]);
UIImage *imgLogo = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgURLLogo]];
if (imgLogo)
[firstMessage setObject:imgLogo forKey:@"cellimage"];
else
[firstMessage setObject:[appDelegate imageByScalingProportionallyToSize:CGSizeMake(48, 48) img:[UIImage imageNamed:@"smily.png"]] forKey:@"cellimage"];
[self performSelectorOnMainThread:@selector(loadingImageComplete:) withObject:arrObjects waitUntilDone:YES];
[pool release];
}
-(void) loadingImageComplete :(NSMutableArray *)arrayOfUsers1 {
NSMutableDictionary *dict = [arrayOfUsers1 objectAtIndex:0];
UIImageView*imgUser1 = [arrayOfUsers1 objectAtIndex:1];
UIImage *img = [appDelegate imageByScalingProportionallyToSize:CGSizeMake(48, 48) img:[dict objectForKey:@"cellimage"]];
imgUser1.image = img;
}
这是发生了什么的nslog。
{
message = {
id = 20;
name = Road;
postedat = "2012-11-17 17:11:51";
status = sent;
text = "mickey d";
toname = Road;
userid = 52;
};
},
{
message = {
id = 23;
name = Road;
postedat = "2012-11-17 17:11:40";
status = sent;
text = "ok message gone wierd";
toname = Road;
userid = 52;
};
},
{
message = {
id = 17;
name = Road;
postedat = "2012-11-17 17:11:29";
status = sent;
text = my;
toname = Road;
userid = 52;
};
},
{
message = {
id = 19;
name = Road;
postedat = "2012-11-17 17:11:26";
status = sent;
text = moo;
toname = Road;
userid = 52;
};
},
{
message = {
id = 22;
name = Road;
postedat = "2012-11-17 17:11:19";
status = sent;
text = loops;
toname = Road;
userid = 52;
};
},
{
message = {
id = 21;
name = Road;
postedat = "2012-11-17 17:11:09";
status = sent;
text = ok;
toname = Road;
userid = 52;
};
},
{
message = {
id = 18;
name = Road;
postedat = "2012-11-17 17:11:05";
status = sent;
text = moo;
toname = Road;
userid = 52;
};
},
{
message = {
id = 13;
name = Road;
postedat = "2012-10-24 13:10:48";
status = sent;
text = test;
toname = Road;
userid = 52;
};
},
{
message = {
id = 16;
name = Road;
postedat = "2012-10-24 13:10:39";
status = sent;
text = hi;
toname = Road;
userid = 52;
};
},
{
message = {
id = 15;
name = Road;
postedat = "2012-10-24 13:10:36";
status = sent;
text = test;
toname = Road;
userid = 52;
};
},
{
message = {
id = 14;
name = Road;
postedat = "2012-10-24 13:10:26";
status = sent;
text = yes;
toname = Road;
userid = 52;
};
}
)
答案 0 :(得分:1)
看起来arrMessages是一个NSArray的数组。所以arrMessages的第一个元素是NSArray
而不是NSDictionary
。
答案 1 :(得分:0)
NSMutableArray *arrMessages = [objectsForContacts objectForKey:[arrayOfUsers objectAtIndex:indexPath.row]];
什么是objectsForContacts?它是数组还是字典?如果它是一个阵列,那就是你出错了。