将 NSObject 转换为 NSDictionary

convert NSObject to NSDictionary

如何将 NSObject 转换为 NSDictionary?

第一步我已经将 NSDictionary 转换为 NSObject,

QRCodeData *obj = [[QRCodeData alloc] initWithQRcodeData:myDictonary];

QRCodeData.h

@interface QRCodeData : NSObject
-(instancetype)initWithQRcodeData:(NSDictionary*)dictionary;
@end

QRCodeData.m

@implementation QRCodeData

-(instancetype)initWithQRcodeData:(NSDictionary*)dictionary
{
    self = [super init];
    if(self){

        self.name = dictionary[@"userName"];
        self.phoneNumber = dictionary[@"mobileNo"];

    }
    return self;

}
@end

我想从对象中获取我的词典,是否可以获取?

请提前帮助和感谢..

最简单的方法是在 QRCodeData class.

中添加此方法
- (NSDictionary *)dictionaryValue
{
  return @{@"userName" : self.name, @"mobileNo" : self.phoneNumber};
}

如果 userNamephoneNumber 可能是 nil,您必须检查一下。

通话
NSDictionary *dict = [obj dictionaryValue];

你可以像这样简单地获取字典,

  NSDictionary *dict = @{@"userName": obj.name ,@"mobileNo" : obj.phoneNumber };

这里objQRCodeData的对象。

希望这会有所帮助:)

您可以为此使用键值编码 (KVC)。首先,为您要共享的所有密钥提供 class 方法:

+ (NSSet *)keysToCopy
{
    return [NSSet setWithObjects:@"userName", @"mobileNio", .....];
}

然后你可以在你的 init 方法中做类似的事情:

for (key in [[self class] keysToCopy])
{
    [self setValue:dictionary[key] forKey:key];
}

并提供另一种方法将其还原为 NSDictionary:

- (NSDictionary *)dictionaryRepresentation
{
    NSMutableDictionary *result = [NSMutableDictionary dictionary];
    for (key in [[self class] keysToCopy])
    {
        [result setObject:[self valueForKey:key] forKey:key];
    }
}

唯一的问题仍然是并非每个 属性 都与 NSDictionary 存储兼容。

这种方法允许您将此解决方案扩展到任何 Cocoa 对象,并且它不需要您更改任何东西,但 keysToCopy 方法以防万一有新的属性要共享。