Tag: 模型

自动生成的Swift网络模型-JustBinary-中

自动生成Swift网络模型 永远不要再编写网络模型。 下一步 ModelSynchro目前正在积极开发中,仍然可以添加一些很酷的功能。 我一如既往地重视反馈,并鼓励对改进此广告连播的任何想法。 最初于 2018 年4月15日 发布在 medium.com 上。

什么是Model View Controller设计模式?

什么是模型视图控制器模式? 模型视图控制器是一种用于Web开发服务(例如应用程序)的软件模式。 与语言无关。 它是Web开发中使用最广泛的范例之一。 MVC体系结构由哪些组件组成? 模型 模型是模式中的主要组件,它管理应用程序的数据,逻辑和规则。 该模型将数据构造并存储在数据库中,并且受控制器命令的约束。 视图 这是屏幕和/或用户界面(UX)形式的数据输出表示。 您可以想象这是您在应用程序中用于规定视图行为的DOM或文档对象模型。 控制者 这将接受输入并发送命令以发送到模型,然后模型将视图输出给应用程序的用户。 在Laravel应用程序中运行MVC 如果基于Laravel应用程序创建新的Web开发服务,则要考虑的最重要的事情之一就是模型。 模特第一 这通常是首先以表的形式创建的东西。 该表已创建,并且由组成模型的各个字段组成。 控制器秒 接下来,我们通常创建一个控制器。 这是用于将数据转换为视图的处理实体。 查看第三 最后,我们创建将用于服务的视图; 说; 一个Web开发服务应用程序,然后在Laravel应用程序的resources / views目录下创建它们。 下面的图表显示了实际的MVC模式: 重要的是要了解MVC设计模式允许组件在同一环境中松散耦合。 这使您可以创建易于修改的单独的可重用组件。 从长远来看,这意味着开发应用程序所花费的时间更快,更高效。 尤其是考虑到客户需要更改MVC模式的事实。 进行这些修改或更改模型等不会很快。 模型视图控制器概念是计算机编程的基本原则之一,当您是技术领域的新手并试图通过提供各种Web开发服务和项目谋生时,这是一个非常有用的范例。 重要的是要知道如何将模型视图控制器概念映射到您自己的项目中。 原因是它从概念上帮助您增强了对松耦合组件通信方式的理解和认识。

为模型创建一个抽象层

您是否在iOS开发中见过模型的不同层? 我从来没有。 例如,当使用Core Data时,我们通常直接在视图中操作NSManagedObject 。 那不理想。 因此,我一次研究了如何为模型创建抽象层。 为什么要使用其他型号? 我正在使用Core Data将数据存储在我们的应用程序中记住。 要创建核心数据模型,我需要在NSManagedObject构造函数中注入NSManagedObjectContext对象。 问题是我不想在应用程序中到处传递上下文对象。 我希望将其隔离在模型层中。 我想在业务层中操作简单的 POSO (普通的旧Swift对象)。 为此,我需要一种将NSManagedObject对象转换为业务对象,反之亦然的方法。 另外,我的数据库对象不应该知道我的业务对象。 这样,我可以轻松地用另一个数据库提供程序替换Core Data,而不会影响其余的代码库。 这个想法的灵感来自清洁架构。 业务和模型层 在我们的应用程序中,请记住,我只有一个表来存储用户最后一次执行某项操作的时间。 很简单 我在业务层中创建了一个Event类。 这是我将在视图中操作的对象。 对于模型层,我创建了一个EventManagedObject类,该类继承自NSManagedObject 。 从一种模式到另一种 为了双向转换对象,我创建了一个由Event类实现的ObjectConvertible协议。 该identifier用于获取相应的NSManagedObject (如果存在)。 然后,我创建了ManagedObjectConvertible协议。 因为我不想在实现该协议的每个NSManagedObject子类中重写相同的代码,所以我写了一个协议扩展来完成大部分工作。 这就是魔术发生的地方。 该协议由EventManagedObject类实现。 由于协议扩展,我只剩下两种方法可以实现。 这些是将业务对象的数据传输到数据库对象的数据,反之亦然的方法。 CRUD操作 现在,无需直接操作NSManagedObject对象,即可在Event对象上执行操作非常容易。 商店 在本文开头,我说过我不想在整个代码中都传递NSManagedObjectContext对象。 为了隔离上下文,我创建了一个EventStore类,该类在NSManagedObjectContext对象上保留了一个引用。 然后,可以在视图控制器或视图模型中使用商店。 业务层使用商店对业务对象执行操作。 它不知道对象的存储位置,它可能在Core Data,Realm甚至文件中。 这是我的抽象层。 缺点 尽管此方法在处理模型对象时提供了一定的便利,但它也有一些缺点。 最大的问题是我无法使用Core Data的内置延迟加载系统或NSFetchedResultsController 。 如果要使用它,则必须创建自己的分页系统。 此解决方案中也未实现处理关系 […]

如何为快速Codable编写强大的模型并再次使用该模型。

在这篇文章中,我将不写什么是可编码协议以及如何使用它! 取而代之的是,我将在一个很短的故事中告诉您如何用快速的语言为其编写最佳模型。 所以走吧… 如果您对编码技术不熟悉,我强烈建议您对其进行详细了解,然后再回到这里阅读其余内容。 你们中的大多数人都可以使用可解码来反序列化JSON文件。 但是如果您想在项目中再次使用该模型作为列表或数组又如何呢? 或者只想从您的项目中的模型创建一个全局实例数组,并进行很多次映射。 不幸的是,许多初级开发人员将创建另一个模型结构并使用该模型结构。 但是它们可能会遇到可选选项或强制展开的问题。 假设此JSON文件为: { “ name”:“ John”, “ lastName”:“ Doe”, “年龄”:27 } 在此JSON文件中,我们有一个简单的用户数据。 所以我们从简单的模型结构开始: struct user_Model:Codable { 让名字:字符串? 让lastName:String吗? 让年龄:int? } 在此模型中,我们使用“ let” ,并且必须在每个参数的末尾添加可选的“?” ,以避免反序列化错误。 如果该参数在该JSON文件中不存在,它将返回“ nil”而不是该参数。 因此,我们应始终处理“无”。 another另一方面,您无法通过安全展开来制作该模型的另一个实例。 这将发生: (testUser?.name)! 这太错了。 也许您说我们可以使用Class而不是struct,然后使用: 必需的init(){ } 并在那里初始化每个参数。 像这样 : class user_Model:Codable { 变量名称:字符串 var lastName:String var age:Int 必需的init(){ self.name […]

SmartBaby:JSON到Swift可编码模型

SmartBaby是一个Mac应用程序,可帮助您从JSON推断Swift Codable模型以节省时间。 如果您有一个响应为JSON的API,则可以使用SmartBaby节省大量时间来创建模型类型。 只需将JSON粘贴到SmartBaby,它将推断并生成Codable模型供您复制。 使用右侧的选项面板,您可以更改有关模型的一些元信息,甚至可以使用功能强大的地图来自定义生成的模型。 请注意,SmartBaby会将嵌套的JSON推断为嵌套模型。 另外,如果可以,SmartBaby将推断字符串为URL(或日期)。 您可以更改模型的名称,添加初始化程序,更改twitter的id的类型,使url为可选等等。 玩吧。 在左侧的列表面板中,您可以检查所有模型。 通过更改模型的“ 项目名称” ,您可以将它们与项目组进行组织。 如果模型太多,请按模型名称搜索以找到所需的模型。 您所有的模型都将通过CloudKit保存到私有数据库中的iCloud。 您几乎需要了解有关SmartBaby的所有信息。 您现在可以在Mac App Store上获得它。 https://itunes.apple.com/us/app/smartbaby/id1438971945?mt=12 您可以为它评分或在使用后对其进行评论。 🐣 如果喜欢,请推荐给您的同事或朋友。 🔥 欢迎反馈! Twitter:@nixzhu,电子邮件:zhuhongxu@gmail.com

CuteBaby:用于Swift的JSON模型生成器

CuteBaby可以从JSON字符串生成Swift模型(结构或类)。 它具有一些不错的功能,可以自定义生成的模型。 它可以从JSON推断属性的类型,例如String,Int,Double,URL和Date。 它可以处理嵌套的JSON,它将生成嵌套的模型。 它支持Swift 4中的Codable。 您可以使用Property Map指定属性名称,使用Array Object Map指定数组的对象名称,使用Property Type Map指定属性的类型 ,或者使用Enum Properties指定枚举的定义。 它还可以处理数组根JSON,它将自动合并数组中对象的属性。 它可以使用漂亮的格式格式化JSON。 它可以从URL加载JSON。 您可以拖放文本文件来创建新项目。 对于JSON: { “ id”:42 “ name”:“ nixzhu”, “推特”: { “ profile_url”:“ https://twitter.com/nixzhu”, “ created_at”:“ 2009-05-12T10:25:43.511Z” } } 它将生成Swift代码(使用Codable ): struct用户:可编码{ let id:整数 命名:字符串 struct Twitter:可编码{ 让profileURL:URL 让createdAt:日期 私有枚举CodingKeys:字符串,CodingKey { case profileURL =“ profile_url” case createdAt =“ created_at” […]