NSObject-MUJSONMapping 1.0.0

NSObject-MUJSONMapping 1.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 自定义
发布最后发布2014年12月

未声明维护。



NSObject 分类,它可以从 JSON 字典递归地自动填充对象属性。

实现

我们有这样的模型

@interface FBUser : NSObject

@property (nonatomic, strong) NSString *ident;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSURL *link;

// array of FBWork objects
@property (nonatomic, strong) NSArray *work;

@property (nonatomic, strong) NSString *gender;
@property (nonatomic) NSInteger timezone;
@property (nonatomic, strong) NSString *locale;
@property (nonatomic, getter=isVerified) BOOL verified;
@property (nonatomic, strong) NSDate *updatedTime;
@property (nonatomic, strong) NSString *username;

@end

我们需要指定 propertyMap 键,用于从不同名称的 JSON 结构中获取属性

//FBWork.m
- (NSDictionary *)propertyMap
{
    return @{@"id": @"ident",
             @"first_name": @"firstName",
             @"last_name":  @"lastName",
             @"updated_time": @"updatedTime"};
}

我们还需要指定哪些类型的对象包含数组操作。

//FBWork.m
- (Class)classForElementsInArrayProperty:(NSString *)propertyName
{
    return [FBWork class];
}

如果对象实现了 initWithJSON:,则按这种方式初始化。如果没有实现,则通过其 init 方法初始化,然后通过 fillWithJSON: 方法填充。

NSManagedObjects

我们需要使用正确的指定初始化器创建我们的 NSManagedObjects,因此我们向实现 initWithJSON: 方法的 NSManagedObject 添加分类。

@implementation NSManagedObject (MUResponseObject)

- (NSManagedObject *)initWithJSON:(id)JSON
{
    NSManagedObjectContext *context = nil; // get your context if you want, e.g. from singleton object

    if(self = [self initWithContext:context])
    {
        [self fillWithJSON:JSON];
    }

    return self;
}

- (NSManagedObject *)initWithContext:(NSManagedObjectContext *)context
{
    NSString *entityName = NSStringFromClass([self class]);
    NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:context];

    if(self = [self initWithEntity:entity insertIntoManagedObjectContext:context])
    {

    }

    return self;
}

如果您使用 AFNetworking,请参阅 AFNetworking-MUResponseSerializer

使用 CocoaPods 安装

CocoaPods 是一个 Objective-C 的依赖管理器,它自动并简化了在项目中使用第三方库(如 AFNetworking)的过程。有关更多信息,请参阅 "Cocoapod.org" 指南

Podfile

platform :ios, '7.0'
pod "NSObject-MUJSONMapping"

联系信息