UltraObject 0.1.3

UltraObject 0.1.3

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年9月

Sungwon Lee维护。



  • Sungwon Lee

Ultra Object 是基于事件的模型框架。它帮助您轻松管理对象。如果您正在使用 RESTful API,这可以是为创建、更新和删除对象并将更改应用到视图和控制器的良好解决方案。

Ultra Object 还帮助您应用可变/不可变模式。

使用

基本声明

#import "UltraObject.h"

@interface TodoObject : UOObject
@property (nonatomic, strong) NSString *content;
@property (nonatomic, strong) NSDate *date;
@end

创建、更新和删除对象

- (IBAction)createButtonPressed {
    NSString *content = self.contentTextField.text;
    [TodoObject new:@{@"id": @(++__uniqueID), @"content": content}];
}

- (IBAction)updateButtonPressed {
    [self.todoObject edit:^(TodoObject *object) {
        object.content = self.contentTextField.text;
    }];
}

- (IBAction)deleteButtonPressed {
    [self.todoObject destroy];
}

对象观察

通过对象观察,您可以轻松地通知对象如果被修改。

使用选择器的基本观察

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.todoObject addObserverWithTarget:self action:@selector(onTodoEvent:)];
}

- (void)onTodoEvent:(UOEvent *) {
    if (event.type == UOEventTypeUpdate) {
        TodoObject *object = event.object;
        self.contentLabel.text = object.content;
    }
}

使用块进行简单观察

[self.todoObject addObserverWithTarget:self block:^(UOEvent *)event {
    NSLog(@"%@", event.object);
}];

观察特定对象类的所有事件

您将收到该类中任何对象的每个事件的的通知。

[TodoObject addObserverWithTarget:self action:@selector(onTodoEvent:)];

观察对象数组

您可以设置对象数组代理来接收相关对象的事件。可变数组将根据事件类型自动修改。例如,destroyupdate 事件通过删除或更新数据影响可变数组。

您还可以决定是否将新创建的对象插入到数组中,或者甚至设置它的插入位置。

- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray *todoObjects = [TodoObject arrayOfModelsFromDictionaries:jsonArray];
    [todoObjects setObjectArrayDelegate:self class:TodoObject.class];
}

- (void)objectArray:(NSMutableArray *)array didReceiveEvent:(UOEvent *)event {
    [self.tableView reloadData];
}

- (NSUInteger)objectArray:(NSMutableArray *)array indexOfNewObject:(TodoObject *)object {
    return 0;
}

从 JSON 加载数据

Ultra Object 使用 JSONModel。请阅读JSONModel#Basic Usage部分了解如何从 JSON 中加载数据。

不可变对象

如果您希望对象不可变以提高安全性,您可以通过继承原始对象并使其符合 UOMutableObject 协议来定义可变对象。

原始对象应定义关联对象以正确加载 JSON。

@interface TodoObject : UOObject
@property (nonatomic, readonly) NSString *content;
@end

@interface MutableTodoObject : UOObject
@property (nonatomic, readwrite) NSString *content;
@end
@interface TodoObject ()
@property (nonatomic, strong) NSString *content;
@end

@implementation TodoObject
@end

@implementation MutableTodoObject
@dynamic content;
@end

edit: 方法将传递可变对象。

[self.todoObject edit:^(MutableTodoObject *)mutableObject {
    mutableObject.content = @"New content";
}];

示例项目

要运行示例项目,首先克隆仓库,然后从示例目录运行 pod install

需求

Ultra Object 支持iOS 7.0以上版本。

安装

UltraObject 可通过 CocoaPods 获取。要安装它,只需在 Podfile 中添加以下行

pod "UltraObject"

作者

Sungwon Lee,[email protected]

贡献

请将其Fork并编辑、添加规范并提交拉取请求。

许可

UltraObject 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。