{"id":19378600,"url":"https://github.com/chasel-shao/csmodel","last_synced_at":"2025-04-23T19:32:09.488Z","repository":{"id":56905164,"uuid":"95753806","full_name":"Chasel-Shao/CSModel","owner":"Chasel-Shao","description":"CSModel is a concise and efficient model framework for iOS/OSX, and provides nested Model to compare values and copy values.","archived":false,"fork":false,"pushed_at":"2018-08-24T03:42:22.000Z","size":82,"stargazers_count":190,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-17T06:42:08.112Z","etag":null,"topics":["array","cocoapod","dictionary","json","model","objective-c","runtime"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Chasel-Shao.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-29T08:05:05.000Z","updated_at":"2025-04-04T22:38:36.000Z","dependencies_parsed_at":"2022-08-21T02:50:33.262Z","dependency_job_id":null,"html_url":"https://github.com/Chasel-Shao/CSModel","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSModel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSModel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSModel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSModel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chasel-Shao","download_url":"https://codeload.github.com/Chasel-Shao/CSModel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250499895,"owners_count":21440710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["array","cocoapod","dictionary","json","model","objective-c","runtime"],"created_at":"2024-11-10T09:06:17.846Z","updated_at":"2025-04-23T19:32:09.151Z","avatar_url":"https://github.com/Chasel-Shao.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"CSModel\n==============\n![Language](https://img.shields.io/badge/language-Objective--C-orange.svg)\n[![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/Chasel-Shao/CSModel/master/LICENSE)\u0026nbsp;\n[![CocoaPods](http://img.shields.io/cocoapods/v/CSModel.svg?style=flat)](http://cocoapods.org/pods/CSModel)\u0026nbsp;\n\n[:book: English Documentation](README.md) | :book: 中文文档\n\n基础介绍\n==============\nCSModel 是一个简洁高效的Model和JSON转换的框架，并且支持嵌套模型进行值拷贝和值比较等等。\n\n特性\n==============\n\n- **简洁轻量**: 方法简单，源码文件比较少\n- **无侵入性**: 无需继承自其他基类\n- **类型安全**: 检查每个对象类型，并且自动处理json中的null\n- **高性能**: 解析速度快，并且支持解析model类继承其他model类\n- **比较**: 支持模型值比较，并且可以是多层嵌套的模型\n- **拷贝**: 提供多层嵌套模型模型，进行值拷贝\n\n性能\n==============\n处理 GithubUser 数据 10000 次耗时统计 (iPhone 6s):\n\n![Benchmark result](https://raw.githubusercontent.com/Chasel-Shao/CSModel/master/Benchmark/result.png\n)\n\n\n使用方法\n==============\n\n### Model、JSON 以及 String 相互转换\n```objc\n// JSON:\n{\n    \"uid\":8082,\n    \"name\":\"Amy\",\n    \"age\":23\n}\n\n// Model:\n@interface Person : NSObject\n@property (nonatomic, assign) UInt64 uid;\n@property (nonatomic, copy) NSString *name;\n@property (nonatomic, assign) NSInteger age;\n@end\n@implementation Person\n@end\n\t\n// 1. 将 JSON 转换为 Model:\nPerson *p = [Person cs_modelWithJSONObject:json];\n\n// 2. 将 JSON String 转换为 Model:\n Person *np = [Person cs_modelWithJSONString:jsonStr];\n\t\n// 3. 将 Model 转换为 JSON 对象:\nid json = [p cs_JSONObject];\n\n// 4. 将 Model 转换为 JSON String:\nNSString *jsonStr =  [p cs_JSONString];\n\n// 5. 将 JSON 数组转换为 Model 数组:\nNSArray *array = [Person cs_modelArrayWithJSONObject:jsonArray];\n```\n### 使用协议\n```objc\n// 1. JSON中的键值名称和模型中的键值进行映射\n+ (NSDictionary\u003cNSString *,NSString *\u003e *)CSModelKeyWithPropertyMapping\n    return @{@\"user_id\":@\"userId\"};\n}\n\n// 2. 如果JSON数组中嵌套另一个JSON数组，实现下列方法通过键值映射为模型数组\n+ (NSDictionary\u003cNSString *,Class\u003e *)CSModelArrayWithModelMapping{\n    return @{@\"child\":[Person class]};\n}\n\n// 3. 如果JSON数组中嵌套另一个JSON对象，实现下列方法通过键值映射为模型\n+ (NSDictionary\u003cNSString *,Class\u003e *)CSModelDictionaryKeyWithModelMapping{\n    return @{@\"child\":[Person class]};\n}\n```\n### Model 的比较与拷贝\n```objc\n// Model \n@interface Teacher : NSObject\n@property (nonatomic, copy) NSString *name;\n@property (nonatomic, assign) NSInteger age;\n@property (nonatomic, copy) NSString *books;\n@end\n@implementation Teacher\n@end\n\n// 1. 比较两个对象的值，支持嵌套比较:\nBOOL isSame = [p cs_isEqualToValue:p2];\n\n// 2. 拷贝对象，支持嵌套拷贝:\nPerson *p2 = [p cs_modelCopy];\n\n// 3. 不同对象之间的值拷贝：\nTeacher *teacher1 = [Teacher cs_modelCopyFromModel:p];\n```\n### Model 的 description 的实现\n```objc\n// 在模型的.m文件中实现以下方法\n- (NSString *)description{\n    return [self cs_description];\n}\n```\n### Model 的 Coding 的实现\n```objc\n// 在模型的.m文件中实现以下方法\n- (void)encodeWithCoder:(NSCoder *)aCoder{\n    [self cs_encode:aCoder];\n}\n- (instancetype)initWithCoder:(NSCoder *)aDecoder{\n    return [self cs_decoder:aDecoder];\n}\n```\n集成\n==============\n\n### CocoaPods\n\n1. 在 Podfile 中添加 `pod 'CSModel'`\n2. 执行 `pod install` 或 `pod update`\n3. 导入 \\\u003cCSModel/CSModel.h\\\u003e\n\n\n### 手动安装\n\n1. 下载 CSModel \n2. 手动导入 CSModel.h 及其源码文件\n\n\n\n作者\n==============\n- [Chasel-Shao](https://github.com/Chasel-Shao)\n\n\n许可证\n==============\nCSModel 使用 MIT 许可证，详情见 LICENSE 文件。\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasel-shao%2Fcsmodel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchasel-shao%2Fcsmodel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasel-shao%2Fcsmodel/lists"}