63 lines
2.1 KiB
Objective-C
63 lines
2.1 KiB
Objective-C
//
|
||
// CustomAttachmentDecoder.m
|
||
// YUMI
|
||
//
|
||
// Created by YUMI on 2021/11/16.
|
||
//
|
||
|
||
#import "CustomAttachmentDecoder.h"
|
||
#import "NSObject+MJExtension.h"
|
||
#import "AttachmentModel.h"
|
||
|
||
@implementation CustomAttachmentDecoder
|
||
|
||
- (id<NIMCustomAttachment>)decodeAttachment:(NSString *)content{
|
||
id<NIMCustomAttachment> attachment;
|
||
NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
|
||
if (data) {
|
||
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data
|
||
options:0
|
||
error:nil];
|
||
if ([dict isKindOfClass:[NSDictionary class]]) {
|
||
int first = [dict[@"first"] intValue];
|
||
int second = [dict[@"second"] intValue];
|
||
id originalData = dict[@"data"];
|
||
|
||
AttachmentModel *model = [[AttachmentModel alloc]init];
|
||
model.first = (short)first;
|
||
model.second = (short)second;
|
||
|
||
if ([originalData isKindOfClass:[NSArray class]]) {
|
||
model.data = originalData;
|
||
} else if ([originalData isKindOfClass:[NSDictionary class]]) {
|
||
model.data = originalData;
|
||
} else if ([originalData isKindOfClass:[NSString class]]) {
|
||
NSDictionary *jsonDict = [self dictionaryWithJsonString:(NSString *)originalData];
|
||
if ([jsonDict isKindOfClass:[NSDictionary class]]) {
|
||
model.data = jsonDict;
|
||
}
|
||
}
|
||
attachment = model;
|
||
}
|
||
}
|
||
return attachment;
|
||
}
|
||
//json格式字符串转字典:
|
||
- (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
|
||
if (jsonString == nil || jsonString.length == 0) {
|
||
return nil;
|
||
}
|
||
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||
NSError *err;
|
||
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
|
||
options:NSJSONReadingMutableContainers
|
||
error:&err];
|
||
if(err) {
|
||
NSLog(@"json解析失败:%@",err);
|
||
return nil;
|
||
}
|
||
return dic;
|
||
}
|
||
|
||
@end
|