gpt4 book ai didi

ios - 确定 JSON 中的值是否为 boolean 值(真/假)

转载 作者:行者123 更新时间:2023-11-29 10:51:49 30 4
gpt4 key购买 nike

我在 NSManagedObject 上编写一个类别,这样它就可以从我从 JSON 中获得的 NSDictionnary(通过 NSJSONSerialization)填充它自己的属性

我的问题是:如果原始值是 true 或 false,它被转换为 NSNumber,但我想将它作为 BOOL(我知道 boolValue)插入到托管对象中,当且仅当它是最初是 BOOL 而不是数字。到目前为止,我的相关代码是:

if ([value isKindOfClass:[NSNumber class]])
{
if (NSClassFromString(@"__NSCFBoolean") && [value isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
[self setValue:[NSNumber numberWithBool:[value boolValue]] forKey:key];
} else if (NSClassFromString(@"NSCFBoolean") && [value isKindOfClass:NSClassFromString(@"NSCFBoolean")]) {
[self setValue:[NSNumber numberWithBool:[value boolValue]] forKey:key];
} else {
[self setValue:value forKey:key];
}
}

我得到错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myJsonOriginalKeyName

同样,当原始 JSON 中的值 id 为 true/false 时,我的托管对象具有对应键的 boolean 属性我如何自动确定我是否应该将值转换为 BOOL 或 NSNumber

最佳答案

我现在正在我的应用程序中执行此操作,它有点 - 嗯 - 没有完全认可,但它似乎在 iOS7 中使用 NSJSONSerialization 工作得很好:

if(strcmp([num objCType], "c") == 0) {
// its a boolean
...

请注意,Apple 在类描述中说您不能指望它是一致的。也就是说,如果 NSJSONSerialization 仅使用一种方法来转换导致这种类型的 bool,它可能不会很快改变。

关于ios - 确定 JSON 中的值是否为 boolean 值(真/假),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084715/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com