将 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};
}
如果 userName
和 phoneNumber
可能是 nil
,您必须检查一下。
与
通话
NSDictionary *dict = [obj dictionaryValue];
你可以像这样简单地获取字典,
NSDictionary *dict = @{@"userName": obj.name ,@"mobileNo" : obj.phoneNumber };
这里obj
是QRCodeData
的对象。
希望这会有所帮助:)
您可以为此使用键值编码 (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
方法以防万一有新的属性要共享。
如何将 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};
}
如果 userName
和 phoneNumber
可能是 nil
,您必须检查一下。
与
通话NSDictionary *dict = [obj dictionaryValue];
你可以像这样简单地获取字典,
NSDictionary *dict = @{@"userName": obj.name ,@"mobileNo" : obj.phoneNumber };
这里obj
是QRCodeData
的对象。
希望这会有所帮助:)
您可以为此使用键值编码 (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
方法以防万一有新的属性要共享。