Objective c 试图为N错误设置本地化描述时,代码崩溃
如果出现问题,我试图设置错误消息,但我得到Objective c 试图为N错误设置本地化描述时,代码崩溃,objective-c,ios,nserror,Objective C,Ios,Nserror,如果出现问题,我试图设置错误消息,但我得到 This class is not key value coding-compliant for the key NSLocalizedDescription 这是我使用的代码 -(id)getMoneyFromAccount:(int) sum error:(NSError **)error { if(self.balance - sum < 0) { NSDictionary *details = [NSDi
This class is not key value coding-compliant for the key NSLocalizedDescription
这是我使用的代码
-(id)getMoneyFromAccount:(int) sum error:(NSError **)error
{
if(self.balance - sum < 0)
{
NSDictionary *details = [NSDictionary dictionary];
[details setValue:@"You don't have enough money" forKey:NSLocalizedDescriptionKey];
*error = [NSError errorWithDomain:@"money" code:200 userInfo:details];
return nil;
}
self.balance = self.balance - sum;
return [NSNumber numberWithInt:self.balance];
}
-(id)getMoneyFromAccount:(int)总和错误:(n错误**)错误
{
if(自平衡-总和<0)
{
NSDictionary*详细信息=[NSDictionary dictionary];
[details setValue:@“您没有足够的钱”forKey:NSLocalizedDescriptionKey];
*错误=[N错误errorWithDomain:@“货币”代码:200用户信息:详细信息];
返回零;
}
self.balance=self.balance-总和;
返回[NSNumber numberWithInt:self.balance];
}
您正在调用setValue:forKey:
您应该在哪里调用setObject:forKey:
[details setObject:@"You don't have enough money" forKey:NSLocalizedDescriptionKey];
此外,您必须从NSDictionary
更改为NSMutableDictionary
或在初始值设定项中设置值:
NSDictionary *details = [NSDictionary
dictionaryWithObject:@"You don’t…"
forKey:NSLocalizedDescriptionKey];
setValue:forKey:
可以使用可变字典,但最好直接调用setObject:forKey:
。
[details setObject:@"You don't have enough money" forKey:NSLocalizedDescriptionKey];
此外,您必须从NSDictionary
更改为NSMutableDictionary
或在初始值设定项中设置值:
NSDictionary *details = [NSDictionary
dictionaryWithObject:@"You don’t…"
forKey:NSLocalizedDescriptionKey];
setValue:forKey:
可以与可变字典一起使用,但最好直接调用setObject:forKey:
。否,setValue:forKey:是正确的方法。可能这是因为您需要创建NSMutableDictionary而不是NSDictionary。否,setValue:forKey:是正确的使用方法。这可能是因为您需要创建NSMutableDictionary而不是NSDictionary。您需要使用NSMutableDictionary或初始化器来设置值。NSDictionary在初始化后无法更改
NSDictionary* details = [NSDictionary dictionaryWithObject: @"..."
forKey: NSLocalizedDescriptionKey];
您需要使用NSMutableDictionary或初始化器来设置该值。NSDictionary在初始化后无法更改
NSDictionary* details = [NSDictionary dictionaryWithObject: @"..."
forKey: NSLocalizedDescriptionKey];
当您需要更改初始化的NSError的localizedDescription时,可以重写NSError类,如下所示:
@interface ValidationError : NSError
@property (nonatomic, strong) NSString *localizedDescription;
@end
当您需要更改初始化的NSError的localizedDescription时,可以重写NSError类,如下所示:
@interface ValidationError : NSError
@property (nonatomic, strong) NSString *localizedDescription;
@end
当我按照您的建议更改代码时,我得到了“NSDictionary可能不会响应setObject:forKey”是的,我没有注意到您使用了一个普通的、不可变的字典。我已经编辑了答案,现在代码必须工作。当我按照您的建议更改代码时,我得到“NSDictionary可能不会响应setObject:forKey”是的,我没有注意到您使用了一个普通的、不可变的字典。我已经编辑了答案,现在代码必须工作。不是用NSDictionary(不可变)我不明白你在说什么?您始终可以使用[NSDictionary Dictionary WithDictionary:mutableDictionary]获取NSDictionary;来自易变字典。他在回应你的第一句话,
NSDictionary
不会用NSLocalizedDescription
键回应setValue:forKey:
。@Ganzolo:正确,我没有读第二句话。但是,您的语句也不正确,因为您应该使用setObject:ForKey:为什么?NSLocalizedDescription是NSString。setValue forKey以NSStrings作为键。不是用NSDictionary(不可变)我不明白你在说什么?您始终可以使用[NSDictionary Dictionary WithDictionary:mutableDictionary]获取NSDictionary;来自易变字典。他在回应你的第一句话,NSDictionary
不会用NSLocalizedDescription
键回应setValue:forKey:
。@Ganzolo:正确,我没有读第二句话。但是,您的语句也不正确,因为您应该使用setObject:ForKey:为什么?NSLocalizedDescription是NSString。setValue forKey将NSStrings作为键。