我有一个NSMutableArray allAnswers
NSMutableArray *allAnswers = [[NSMutableArray alloc] init];
使用值:
allAnswers --- (
{
PlayerName = Trfghuhhrf;
Score = 1000;
},
{
PlayerName = Test;
Score = 333;
},
{
PlayerName = DDDDDDDD;
Score = 250;
},
{
PlayerName = SSSSSSSSSSSSSSS;
Score = 100;
},
{
PlayerName = mn;
Score = 100;
}
)
这就是我构建词典的方式。
NSDictionary *answer = [NSDictionary dictionaryWithObjectsAndKeys:
name, PlayerKey,
[NSNumber numberWithInt:[score intValue]], ScoreKey,
nil];
[allAnswers addObject:answer];
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:ScoreKey ascending:NO];
[allAnswers sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
NSLog(@"allAnswers --- %@",allAnswers);
for (NSDictionary *answer in allAnswers)
{
NSLog(@"%@, %@", [answer objectForKey:PlayerKey], [answer objectForKey:ScoreKey]);
NSMutableString *mString = [[NSMutableString alloc]init];
[mString appendString:[answer objectForKey:PlayerKey]];
[mString appendString:@" - "];
[mString appendString:[answer objectForKey:ScoreKey]];
NSLog(@"mString --******-- %@",mString);
}
当我尝试将[answer objectForKey:ScoreKey]添加到可变字符串时,应用程序正在崩溃。我尝试将[answer objectForKey:ScoreKey]转换为(NSString),但这没有帮助。
请告知我的错误。
很抱歉有详细说明。
添加崩溃日志:
2012-03-03 00:43:48.149 NumberTwins [38378:10703] - [__ NSCFNumber length]:无法识别的选择器发送到实例0x9155400 2012-03-03 00:43:48.149 NumberTwins [38378:10703] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFNumber长度]:无法识别的选择器发送到实例0x9155400' * 首先抛出调用堆栈:
答案 0 :(得分:2)
您正在为int
存储NSNumber
作为ScoreKey
,但您不能将其附加到字符串,因为它是错误的类型。您需要将其转换为NSString
。
您不能只将NSNumber
转换为NSString
,因为它完全不同类型;你应该使用正确的NSNumber方法:
[mString appendString:[[answer objectForKey:ScoreKey] stringValue]];
您能够记录值的原因是因为在日志中放置%@
会调用对象的description
方法。此方法在NSObject中声明,并且Framework类实现它,以便它以字符串形式返回对象的表示。
答案 1 :(得分:0)
希望这个也可以帮助你[mString appendFormat:“%@”,[answer objectForKey:ScoreKey]];