NSObject-OnSteroids 0.0.5

NSObject-OnSteroids 0.0.5

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

Cameron Webb 维护。



允许您从字典创建对象,并处理大量其他烦人的任务。灵感来自于我在 Sqwiggle 期间编写的代码。NSObject-OnSteroids 来自于 Sqwiggle iOS SDK 中的 SQObject.{h,m}

优势

  • 快速将字典映射到对象(有助于处理来自 REST API 的字典)
  • 将对象导出到字典(当您需要向 REST API 发布对象时很有帮助)
  • 编码/解码为编码器直接内置。

如何安装

pod 'NSObject-OnSteroids' 添加到您的 podfile 中,然后导入 <NSObject-OnSteroids/NSObject-OnSteroids.h>。示例代码可在子目录 "NSObject-OnSteroidsExample" 中找到。

如何使用

创建一个您想映射的新类。在这个例子中,我将创建一个名为 "Book" 的对象,并在 .h 和 .m 文件中使用以下代码

Objective-C

//Book.h

#import <NSObject-OnSteroids/NSObject-OnSteroids.h>

@interface Book : NSObject

@property (nonatomic, retain) NSString *title;
@property (nonatomic, copy)   NSDictionary *someDictionary;

@end
//Book.m
#import "Book.h"

@implementation Book

-(NSDictionary *)modelDefinition
{
    return @{@"title" : @"title", @"someDictionary": @"dictKey.importantDictionary"};
}

@end

Swift(注意:对象必须从 NSObject 继承。抱歉 :-/ 我稍后会更新这个。)

//Objective-C Bridging Header
...
#import <NSObject-OnSteroids/NSObject-OnSteroids.h>
//Book.swift
class Book : NSObject {
    ... 
    override func modelDefinition() -> [NSObject : AnyObject]! {
        return ["title" : "title", "someDictionary" : "dictKey.importDictionary"]
    }
}

您可能想知道:"这是那个模型定义的垃圾是什么?" 这是一个您需要在对象中重写的方法,以便它知道哪些密钥映射到哪些属性。modelDefinition 的格式为

{"iOS Class Property" : "Dictionary KeyPath"}

请注意 @"dictKey.importantDictionary"。如果您对 KeyValuePath 的概念不是很清楚,基本来说,添加 "." 允许您遍历字典以获取任何子项。在这种情况下,@"dictKey.importantDictionary" 暗示通过这里传递的对象将有如下结构:{dictKey": {"importantDictionary" : {"blah" : "blah"}}}

现在我们已经处理好了这个对象,接下来我们在其他地方导入 Book.h 并初始化一个 Book 对象

Objective-C

//SomeOtherClass.m
#import "Book.h"

...

Book *book = [Book objectWithDictionary:@{@"title": @"How Now Brown Cow", @"dictKey" : @{@"importantDictionary" : @{@"blah" : @"hah"}}];
NSLog(@"Book Object: %@ ", book);
NSLog(@"Book Title: %@", book.title);
NSLog(@"Book Dictionary %@", book.someDictionary);

Swift

//SomeOtherClass.swift
import Book

...

var Book : Book = Book(dictionary: ["title": "How Now Brown Cow", "dictKey" : ["importantDictionary" : ["blah" : "blah"]]])

println("Book Object: \(book)")
println("Book Title: \(book.title)")
println("Book Dictionary: \(book.someDictionary)")

如您所见,已经将提供的目标对象适当地映射到各自的目 标。太棒了。

假设我想获取我刚才创建的对象的字典格式。只需这样做

Objective-C

[book dictionaryFormat];

Swift

book.dictionaryFormat()

您将得到包含所有属性及其相应值的字典

{
    dictKey = {"importantDictionary" : {"blah" : "hah"}};
    title = "How Now Brown Cow";
}

天哪!有效地减少了您编写任何代码来创建用于发布的好格式字典的需求,因为它已经知道您 API 使用哪些字段了!

反馈?

打开 GH Issue。我很乐意讨论问题。这还非常早期,还有许多其他的方法可以走。

待办事项

  • 测试!