日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mantle For iOS

發布時間:2024/7/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mantle For iOS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mantle可以很方便的去書寫一個模型層的代碼。

使用它可以很方便的去反序列化JSON或者序列化為JSON(需要在MTLModel子類中實現<MTLJSONSerializing>協議)

使用一個解釋器MTLJSONAdapter去轉換模型對象。

NSError *error = nil; MyObject *myObject = [MTLJSONAdapter modelOfClass:MyObject.class fromJSONDictionary:JSONDictionary error:&error]; //把JSONDictionary轉換為模型對象NSDictionary *JSONDictionary = [MTLJSONAdapter JSONDictionaryFromModel:myObject]; //將模型對象轉為JSON字典

+JSONKeyPathsByPropertyKey

這個方法返回一個字典,指定著你的模型對象和JSON中關鍵字的映射關系。

一個例子:

@interface XYUser : MTLModel@property (readonly, nonatomic, copy) NSString *name; @property (readonly, nonatomic, strong) NSDate *createdAt;@property (readonly, nonatomic, assign, getter = isMeUser) BOOL meUser;@end@implementation XYUser+ (NSDictionary *)JSONKeyPathsByPropertyKey {return @{@"createdAt": @"created_at", //這里代表createdAt屬性映射JSON中的created_at關鍵字@"meUser": NSNull.null //meUser不會從JSON中反序列化 }; }@end

當我們用字典反序列化的時候

NSDictionary *JSONDictionary = @{@"name": @"john",@"created_at": @"2013/07/02 16:40:00 +0000",@"plan": @"lite" };XYUser *user = [MTLJSONAdapter modelOfClass:XYUser.class fromJSONDictionary:JSONDictionary error:&error];//user中的name為john createdAt為2013/07/02 16:40:00 +0000 meUser為0 plan將會被忽略

+JSONTransformerForKey:

實現這個方法去用一個不一樣的類型轉換器去轉化屬性

+ (NSValueTransformer *)JSONTransformerForKey:(NSString *)key {if ([key isEqualToString:@"createdAt"]) {return [NSValueTransformer valueTransformerForName:XYDateValueTransformerName]; }return nil; }

對于一些值的轉換:

+ (NSValueTransformer *)createdAtJSONTransformer {return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSString *str) {return [self.dateFormatter dateFromString:str];} reverseBlock:^(NSDate *date) {return [self.dateFormatter stringFromDate:date]; }]; }

+classForParsingJSONDictionary:

果定義了一個類簇,可以實現這個方法去轉換。

@interface XYMessage : MTLModel@end@interface XYTextMessage: XYMessage@property (readonly, nonatomic, copy) NSString *body;@end@interface XYPictureMessage : XYMessage@property (readonly, nonatomic, strong) NSURL *imageURL;@end@implementation XYMessage+ (Class)classForParsingJSONDictionary:(NSDictionary *)JSONDictionary {if (JSONDictionary[@"image_url"] != nil) {return XYPictureMessage.class; }if (JSONDictionary[@"body"] != nil) {return XYTextMessage.class; }NSAssert(NO, @"No matching class for the JSON dictionary '%@'.", JSONDictionary);return self; }@end

使用

NSDictionary *textMessage = @{@"id": @1,@"body": @"Hello World!" };NSDictionary *pictureMessage = @{@"id": @2,@"image_url": @"http://example.com/lolcat.gif" };XYTextMessage *messageA = [MTLJSONAdapter modelOfClass:XYMessage.class fromJSONDictionary:textMessage error:NULL];XYPictureMessage *messageB = [MTLJSONAdapter modelOfClass:XYMessage.class fromJSONDictionary:pictureMessage error:NULL];

數據的持久化

MTLModel已經遵循了<NSCoding>協議,所以可以NSKeyedArchiver歸檔這個模型對象。

本文轉載自:http://www.thinksaas.cn/group/topic/347073/

總結

以上是生活随笔為你收集整理的Mantle For iOS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。