Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 试图为N错误设置本地化描述时,代码崩溃_Objective C_Ios_Nserror - Fatal编程技术网

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作为键。