gpt4 book ai didi

ios - NSDictionary 扩展 valueForKey 方法

转载 作者:行者123 更新时间:2023-11-28 18:34:07 25 4
gpt4 key购买 nike

我可以创建将扩展 - (id)valueForKey:(NSString *)key 方法的类别吗?如果此键的值等于 [NSNull null]它会返回空字符串@""

它连接到我从后端服务器以 JSON 格式获取的一些键的 nil 值。

所以如果我需要为属性保存一些值,它可以是 nil。

假设我将此代码与键值为 nil 一起使用

artist.name = ad[@"artist"][@"name"]; // nil value on the right.

所以如果我有扩展,它将检查键的值并返回我 @"" nil 的意图。有道理吗。

或者我是否需要扩展 NSManagedObject 来检查属性类型,然后返回相应的值 @""0nil,或者 0.0f 如果属性有另一个非字符串类型。

最佳答案

与其在 NSDictionary 上定义类别,不如在 NSObject 上定义类别,并在那里进行转换:

@interface NSObject (DBNullHandling)
-(NSString*)nullToEmpty;
@end

@implementation NSObject (DBNullHandling)
-(id)nullToEmpty {
return (self == [NSNull null]) ? @"" : self;
}
@end

现在你可以这样做了:

artist.name = [ad[@"artist"][@"name"] nullToEmpty];

如果 ad[@"artist"][@"name"] 返回 [NSNull null]artist.name 被赋值 @"";否则,它会被分配 ad[@"artist"][@"name"] 返回的值。

关于ios - NSDictionary 扩展 valueForKey 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256187/

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