Tag: 移动开发

具有Cocoa键值观察器的简单iOS MVVM

为什么使用MVVM 与使用MVC相比,使用MVVM体系结构构建iOS应用程序具有许多优势。 优势之一是通过将模型和视图分离到单独的MVVM对象来减少Massive View Controller问题,View Controller的职责是仅在ViewModel中 观察与视图相关的值,然后在值更改时更新视图。 这导致View Controller与模型之间的耦合较少 。 单元测试变得更加容易,因为我们可以将ViewModel与View Controller分开进行测试。 iOS应用中MVVM的当前状态 许多使用MVVM架构构建的iOS应用程序都使用第三方库(例如RxSwift和RxCocoa)来观察视图模型对视图控制器的更改。 RxSwift是一个非常强大的库,我们可以将其转换观察器与组合,合并,zip和许多其他强大的转换一起使用。 尽管RxSwift功能非常强大,但有时我们只想使用本机Cocoa Foundation框架构建没有第三方依赖性的简单小型应用程序。 使用不依赖第三方的MVVM Apple Foundation Framework提供了任何可用于在iOS体系结构中构建MVVM应用程序的内置解决方案吗? 是的,答案是Cocoa Key Value Observing 。 KVO是观察者模式 ,可用于观察以NSObject作为其超类的对象中的属性更改的值。 可可KVO是一种非常强大的机制,可用于在iOS中构建基于MVVM的体系结构。 缺点是语法使用起来非常冗长,我们必须手动保留和删除观察者, RxSwift提供了addToDisposeBag方法,该方法可用于自动删除观察者 。 实施KVO以构建基于iOS MVVM的应用 这是示例iOS应用程序,当用户在TextField中键入内容时,该应用程序实现了KVO以构建简单的电子邮件验证。 该应用程序分为3个主要组成部分: ViewController是一个UITableViewController ,它显示UITextField来输入电子邮件,而UILabel来显示电子邮件是否有效。 EmailModel是一个普通的Swift类 ,用于存储电子邮件的字符串和表示电子邮件是否有效的布尔值。 EmailViewModel是一个Cocoa NSObject超类,它提供了将显示电子邮件文本以及它是否为有效电子邮件格式的属性。 电子邮件模型 EmailModel存储电子邮件的值文本和表示电子邮件是否有效的isValid布尔值。 值更改时使用Swift属性观察器,使用包含有具有新值的userInfo的NotificationCenter来发布带有EmailModel.TextDidChange的Notification ,它还通过调用validateEmail来 设置isValid的值 ,并将电子邮件文本的newValue传递为使用RegEx表达式评估。 isValid布尔值中的更改也通过NotificationCenter发布。 EmailViewModel EmailViewModel是基于NSObject超类的MVVM , 该类接受EmailModel作为其构造函数。 它提供了使用objc动态关键字的 emailTextValue和isValidValue, […]

认识团队:iOS开发人员兼首席讲师Adam Wallraff

认识我们出色的iOS首席讲师亚当(Adam),我们是Code Fellows的教学人员中众多才华横溢的开发人员之一。 他分享了更多有关他的背景,对有抱负的iOS开发人员的建议,为什么大象会带来出色的运输等方面的更多信息。 嗨,亚当! 感谢您今天加入我们。 您可以先分享一些有关如何进入iOS开发的信息吗? 是的 我很高兴能够分享我的经验。 我第一次接触高中的软件开发。 我参加了有关HTML,Visual Basic和C ++的多个课程。 我一直非常喜欢学习新技术。 在20多岁的时候,我和我的朋友提出了一个应用程序概念,我们最初打算将开发工作外包出去。 我认为这是重新编写代码的机会,短短几周后,我爱上了iOS开发。 尽管我们谈论的项目从未实现,但由于妻子和我多次在全国各地迁移,我在接下来的两年中继续自学iOS开发。 最终,我获得了我的第一个开发工作,在塔科马以南的Lewis-McChord联合基地工作。 在“代码研究员”的教学中,您最喜欢的部分是什么? 在教学之前,作为承包商我偶尔碰到的一件事情是人们对正在建造的东西缺乏兴奋感。 我最喜欢教学的是,我的学生和我一样对概念和主题感到兴奋。 当他们学到新东西时(例如,为Apple Watch开发应用程序的WatchKit),他们全都亮了,我们围绕它进行了有趣而有趣的对话。 您将使用什么三个词来概括“代码研究员”文化? 成长性 验收 社区 您已经在iOS平台上待了一段时间了-Swift未来6个月的最大预测是? 对于苹果公司来说,总是很难确定他们打算朝哪个方向发展。 但是,有了这个,我想说Swift将继续扩展到服务器端,甚至可能扩展到Android开发。 这只是我的观点,但是已经围绕这两种思想构建了一些非常出色的工具,我认为它们会随着时间的推移变得越来越好,越来越稳定。 从Google Glass到Apple Watch,我们已经看到大量成功的(但不那么成功)的可穿戴设备涌现出来-您认为可穿戴技术的世界下一步是什么? 我认为可穿戴设备将随着时间的推移而不断改善。 创建成功的可穿戴产品最困难的部分是用户与他们的交互方式非常不同。 我认为Google Glass很难,因为人们刚刚将AR和VR普遍接受到他们的日常工作和设备交互中。 与可穿戴技术之间最难平衡的是,目标是在加快和缩短用户与设备的交互的同时,使其成为客户的必需品。 当涉及到移动设备时,用户的注意力跨度很短,耐心也很小。 可穿戴设备夸大了这种期望。 目的是使它与用户快速便捷的交互。 可穿戴技术需要感觉像是用户的延伸,以至于他们觉得没有它就无法运行,但他们也忘记了它的存在。 但是,为回答您的问题,Hololens将成为蜜蜂的膝盖。 如果有人想明天开始学习iOS开发,那么您将向他们指出哪些三种资源? Stanford U — iOS开发视频系列—在iTunes U上可用 Raywenderlich.com —出色的书面和视频格式教程 Apple文档—他们为开发人员探索其各种框架和库提供了大量的出色指南和资源 闪电回合! 最喜欢的神话动物? 大脚怪(尽管我不确定大脚怪实际上是神话……)。 […]

按需资源开发人员指南

[vc_row full_width =”“ parallax =”“ parallax_image =”“ bg_type =”“ parallax_style =”“ bg_image_new =”“ layer_image =”“ bg_image_repeat =”“ bg_image_size =”“ bg_c​​stm_size =”“ bg_img_attach =”“ parallax_style =”“ bg_image_posiiton =”“ animation_direction =”“ animation_repeat =”“ video_url =”“ video_url_2 =”“ u_video_url =”“ video_opts =”“ video_poster =”“ u_start_time =”“ u_stop_time =”“ viewport_vdo =”“ enable_controls =”“ bg_override = ”” disable_on_mobile_img_parallax =”” parallax_content […]

10种出色的移动开发影响力

紧跟行业中的最新新闻和发现,尤其是在技术行业,考虑到一切发展和变化如此之快,保持最新状态非常重要。 做到这一点的简便方法是跟随一些影响者。 实际上,它可以帮助您了解最新趋势和最新技术。 在这篇文章中,我们列出了2016年杰出的移动开发影响者名单,所有移动开发者都应该了解并明显遵循。 正如我提到的,我们周围的一切都在不断变化。 特别适合开发人员。 因此,可以,跟随移动影响者可以帮助您获得有关趋势的提示,新闻,建议和知识。 但是知道要跟随谁也很耗时,因此您必须进行更多的研究。 我不会说谎,有数百人非常有趣,但是密切关注所有人并不现实。 以下列表与世界上最好的移动开发影响者无关,它是我们在Apiumhub上关注的影响者列表,我们认为这是惊人的裂缝! 2016年我们的十大移动开发影响力 杰森·克宁 博客 Github Jason是一位自由移动应用程序开发人员,具有在ASP和.NET方面的经验,为iPhone,iOs,iPad和Android构建移动应用程序。 他目前正在为诸如Appcelerator,CareMEDS,EMC,Six Pack Productions,Clarityn,ITV,YouGov,Getum,ACE Insurance,Hotskoop,SportsBlog,Kloc,GemsAtWork,Three.co.uk,UKTV,Mosaique等公司开发Titanium本地应用程序Jason为开源项目做出了贡献,并为Titanium Mobile编写了自己的模块,小部件和应用程序。 除编码外,他还经常与公司一起担任开发主管,架构师和导师。 在他的博客BouncingFish上,您可以为开发人员找到很好的建议。 KIN LANE 博客 Github Kin Lane拥有20多年的程序员,数据库管理员,架构师,产品开发人员,经理和执行人员的经验。 他的目标是帮助理解API的价值和潜力,因此决定专注于API传播者。 鲍里斯·伯格 博客 Github 鲍里斯(Boris)是一位注重用户体验的软件开发人员,他喜欢为Apple设备构建程序。 他专门研究移动应用程序,分布式计算,代码生成,编程语言和网络编程的耦合。 Boris是CocoaPods核心团队的成员,多年来,他编写了各种Xcode插件并为开源项目做出了贡献。 他构建了很多东西,其中包括iOS SDK和我们在Contentful的Discovery应用程序,Contentful是一个针对Web应用程序,移动应用程序和连接的设备的内容管理平台。 凯尔·富勒 博客 Github Kyle Fuller是专注于移动体验的软件和移动应用程序开发人员。 一段时间以来,他一直在设计应用程序(主要是iPhone和iPad)和开发人员工具,并且在许多开源社区中非常活跃。 此外,他还开发了诸如Palaver之类的应用程序,并实际上在Cocode工作。 YA中NO 博客 Github Ayaka自iOS 4以来一直从事iOS开发,她只喜欢编写Swift,如果您想阅读更多,我建议阅读她的博客。 她非常活跃,并进行了很多演讲,例如在CMD + U会议,iOSCon和try! 斯威夫特(及其他许多人)。 基思·史密利 博客 […]

使用Swift的ARKit测量长度

您是否曾经历过需要测量设备的经历,但现在没有任何东西了? 不要害怕! 因为,实际上我们可以使用ARKit使用我们的iOS设备来测量从一个点到另一个点的对象。 在此应用程序中,我们将添加两个点,这些点将确定测量的开始和结束。 同样,长度为英寸的文本将显示在端点的正上方。 为了获得更好的参考,您可能还希望在此处查看整个代码库。 设定 首先,我们需要创建一个增强现实应用程序。 对于这种情况,我们将其命名为ARRuler。 选择Swift作为其语言,选择内容技术作为SceneKit 。 我们无法为此选中单元测试和UI测试 ,因为我们不会使用它。 在我们的viewDidLoad()方法中,我们也可以删除以下行,因为我们不需要它们。 sceneView.showsStatistics = true 让场景= SCNScene(名称:“ art.scnassets / ship.scn”)! sceneView.scene =场景 另外,在相同的viewDidLoad()方法中,让我们添加sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints],以便我们可以跟踪ARKit将使用的设备位置。 添加起点和终点 现在我们的项目已经设置好,让我们使用以下代码覆盖touchesBegan(_:with) ,以检测触摸是否在视图中发生。 覆盖func touchesBegan(_ touches:Set ,事件:UIEvent?){ } 接下来,我们需要在ARSCNView中获取第一次触摸的位置。 然后使用触摸位置执行命中测试,以查看它是否对应于特征点。 由于命中测试结果返回一个数组,因此我们将使用第一个数组添加一个点。 如果让touchLocation = touches.first?.location(in:sceneView){ 让hitTestResults = sceneView.hitTest(touchLocation,类型:.featurePoint) 如果让hitResult = hitTestResults.first { addDot(at:hitResult) } } 正如您所注意到的,我们还没有创建addDot(at 🙂方法。 此方法应接受ARHitTestResult 。 […]

移动先锋:iOS开发人员及其手艺

在2007年末,Apple Inc.诞生了移动开发的新玩家,该游戏自诞生以来就已经塑造了技术格局。 根本性的进步-称为iOS开发 -已经树立了一个基准,它在追随者和业务原则中保持了卓越的身份和完整性。 尽管Android开发无可争议,但iOS像滑坡一样,希望能够发挥关键影响。 关于所说的话,iOS开发已成为一个文化人物,具有其历代以来所获得的空前的公共价值,从而创造了自己的王朝。 此外,随着iOS开发人员在商业市场上赚钱,苹果公司为大规模就业做出了贡献。 史蒂夫·乔布斯 ( Steve Jobs)是该行业的两极分化人物之一,也是苹果公司的共同创始人之一。 史蒂夫·乔布斯曾经说过: “……周围的一切都是由比你聪明的人组成的。 您可以更改它; 你可以影响它。 的确,已故的影响者秉承了他的原则,后来通过包括小工具,电子元件,应用程序服务等在内的集体创新,成为了行业的先锋。最终,乔布斯和他的员工一起渗透了公众的身体需求和欲望; 导致策划苹果品牌的飞速成功。 一击接一击。 iOS与Android操作系统一起,彻底改变了人们的生活方式和技术观点。 凭借其创新的小工具,尤其是臭名昭著的iPhone,人们发现该小工具具有诱人的奢华感和便捷性,可以满足他们的需求。 因此,iOS的发展为市场上移动技术的发展做出了重大贡献。 为当今寻求重塑行业的iOS开发人员铺平了道路。 什么是iOS开发人员 iOS开发人员是一位移动专家,负责制定设计并开发适用于iOS移动设备的应用程序。 他们是技术专家,对iOS平台及其错综复杂的阶段有着复杂的掌握。 基本上,他们将对移动应用程序项目做出规定,并生成一个方便且可操作的iOS应用程序。 出色且用途广泛的iOS开发人员对用户界面 (UI)和用户体验 (UX)设计都有广泛的了解和实践。 通常,iOS开发人员最好精通一种以上的编程语言平台,即:Swift和Objective-C。 职责与承诺 构建和设计基于Apple iOS操作系统的创新应用程序。 在应用工艺创作之前,应先确定项目目标的策略。 与团队合作,获取有关设计,功能和原理的见解。 保障应用程序的性能,响应速度和质量,以提供出色的用户体验。 运行测试并在性能全面下降之前识别性能错误。 创新思想,评估性能并集成升级功能,以供将来的应用程序更新使用。 无论是简单的还是复杂的,都可以借助iOS开发人员来实现所需的iOS应用。 该过程可以是一系列的反复试验。 要使该项目成功,需要一个表达清晰,对细节有清晰认识的项目构想。 请记住,在此过程中可能会不可避免地遇到障碍。 但是,通过与您的iOS开发人员之间的紧密合作,项目的繁荣将是至关重要的,这不仅会使您受益,而且也会使那些期待创新的人们受益。 最初于 2018年3月9日 发布在 www.blueprintbusinesssolutionscorp.com 上。

在Swift中撤消历史记录

利用价值语义实现大善 在过去的几周中,有许多博客文章希望向Swift添加动态行为。 Swift已经是一种非常动态的语言:它具有泛型,协议,一等函数,并且标准库中填充了诸如map和filter之类的函数,这些函数动态地获取其操作(不是像KVC那样使用字符串,而是使用函数,这样更安全,更灵活)。 大多数说想要动态行为的人意味着他们特别想反思:他们想在运行时分析和修改程序。 在Swift中,只有非常有限的反射机制,尽管您已经可以在运行时检查并生成代码。 例如,以下是生成可用于NSCoding或JSON序列化的字典的方法:Swift镜像和JSON。 今天,我们将看看在Swift中实现撤消功能。 人们不断提出来进行反思(Objective-C支持)的示例之一是NSUndoManager。 借助struct语义,我们可以以其他方式向应用程序添加撤消支持。 在开始之前,请确保您了解结构在Swift中的工作方式(最重要的是,它们都是唯一的副本)。 显然,本文不会消除在Swift中进行运行时编程的需要,也不会替代NSUndoManager。 这只是一个如何思考的简单例子。 我们将构建一个名为UndoHistory的结构。 需要注意的是,它仅在A为结构体时才有效。 为了保留所有状态的历史记录,我们可以将每个值存储在数组中。 每当我们要更改某些内容时,我们都将其推入阵列,而每当要撤消操作时,便会从阵列中弹出。 我们总是想从初始状态开始,因此我们为此创建一个初始化器: struct UndoHistory { private let initialValue:A 私人var历史记录:[A] = [] init(initialValue:A){ self.initialValue =初始值 } } 例如,如果要向由数组支持的表视图控制器添加撤消支持,则可以创建此结构的值: var history = UndoHistory(initialValue:[1、2、3]) 为了支持对其他结构的撤消操作,我们从一个不同的初始值开始: struct Person { 变量名称:字符串 变量年龄:整数 } var personH​​istory = UndoHistory(initialValue:Person(名称:“ Chris”,年龄:31)) 当然,我们希望有一种获取当前状态并设置当前状态的方法(换句话说:将一个项目添加到我们的历史记录中)。 要获取当前状态,我们只需返回历史记录数组中的最后一项,如果数组为空,则返回初始值。 要设置当前状态,我们只需追加到历史记录数组即可。 扩展名UndoHistory { var currentItem:A […]

iOS 10推送通知有哪些新功能?

[vc_row full_width =”“ parallax =”“ parallax_image =”“ bg_type =”“ parallax_style =”“ bg_image_new =”“ layer_image =”“ bg_image_repeat =”“ bg_image_size =”“ bg_c​​stm_size =”“ bg_img_attach =”“ parallax_style =”“ bg_image_posiiton =”“ animation_direction =”“ animation_repeat =”“ video_url =”“ video_url_2 =”“ u_video_url =”“ video_opts =”“ video_poster =”“ u_start_time =”“ u_stop_time =”“ viewport_vdo =”“ enable_controls =”“ bg_override = ”” disable_on_mobile_img_parallax =”” parallax_content […]

iOS 10.3对成长型市场营销人员意味着什么?

戴维·雷恩克(David Reyneke) 苹果本周为即将发布的iOS 10.3发布了beta版本。 自2013年Google Play商店推出类似功能以来,更新一直着重于用户反馈。 iOS 10.3的新功能将使开发人员可以通过Apple系统提示来提示用户,而无需离开应用程序内体验。 此外,此更新还为开发人员提供了在App Store中回应评论的功能。 不再留下负面评论了! 是时候重新考虑用户反馈的提示了 由于App Store排名算法非常重视好评,因此,增长市场营销人员一直希望在用户对应用的兴趣达到空前高涨的时候,优雅地提示用户对其应用进行评论。 我们在Prolific的许多合作伙伴应用程序中都采用了这种策略,询问用户是否有良好的使用体验,或者将其发送到App Store以查看他们是否同意,或者将其路由到反馈表,如果他们似乎没有话要说的话。 但是,我们经常争论这种策略可能对用户体验的影响。 这些提示在什么时候不影响产品的实用性? Apple似乎已将辩论内部化,使您可以提示用户提出审阅请求的次数标准化了。 借助iOS 10.3,Apple每年将每位用户的上限限制为三个。 这个限制无疑会促使产品团队考虑何时使用三枪最有利。 这是一个简单的例子,我们的高级iOS开发人员Thibault Klein为我们模拟了。 准备开始回应评论 随着越来越多的开发人员开始理解使用SKStoreReviewController API的重要性,进而吸引更多用户到App Store分享经验,评论将继续成为赌注。 此最新举动仅表明Apple对评论的重视以及它将如何继续影响App Store Optimization。 像Apptentive这样的服务(也在自己的博客文章中解决了该问题),还有助于在公共App Store反馈的基础上获取私人反馈。 尽管这些反馈捕获方法存在相似之处,但Apptentive等公司很可能会发现从iOS 10.3更新中获得的价值有所增加。 随着越来越多的应用提示用户进行评论,这也将增加获取私人反馈并及时回应用户的重要性。 此外,诸如Apptentive之类的工具可帮助我们了解何时才是提示用户的最佳时机,而不是在一年之内仅允许进行三次尝试的情况。 响应App Store评论的能力无疑将成为应用程序开发人员的普遍做法。 作为产品团队,我们不仅可以在App Store上应用我们从用户那里听到的信息,而且还可以让他们知道我们如何计划解决他们的担忧。 另一方面,我们也可以感谢我们最大的品牌拥护者和传播者。 Apple App Store的下一步是什么? 自从iOS 10推出以来,我们一直非常重视增强App Store的功能。 例如,Apple Search Ads是一个备受期待的新广告网络,开发人员仍在努力。 App Store的提交审核流程也得到了极大的改进,与前几次迭代中将近10个工作日的访问时间相比,有些应用在短短几天内就获得了批准。 苹果对App Store的持续投资对开发人员来说是一个好兆头。 […]

印度的iOS App开发公司

新公司应该将资源投入iPhone应用程序开发公司,以使它们能够在iOS,Android和Web上运行,这有很多原因。 无论如何,作为第一步,他们有理由将重点放在iOS / iPhone应用开发公司上。 iPhone应用程序的日益普及也源于长期竞赛生产的智能手机价格下降。 促使应用程序展示台引人注目的另一个重要原因是,适应性强,以客户为导向的,坚实的框架得以兴起,该框架处理了iPhone App的开发和发行。 察觉到应用程序的广泛声誉和灿烂的未来前景,众多公司纷纷涉足便携式iOS应用程序开发。 “根据市场研究机构App Annie的预测,到2020年,移动应用市场规模将翻一番,达到1010亿美元” 这样,除了我的探索之外,根据我的观点,我陪同一些iPhone App开发公司在评论员,学者,客户以及其他代表中被公认为“最佳”。 这些iOS应用开发公司在成本,风险时间表,质量和标准通信方面处于最高位置。 在这些发展中的市场中,印度的重要性更为明显,因为它们已进入多功能应用程序开发和利用。 印度的顶级便携式应用程序设计师正在为一些广受赞誉的品牌提供服务,而该应用程序展示会具有巨大的潜力,可以根据发展进步和各种用途来生产Android和iOS应用程序。 我了解Android是更大的市场,但有询问称iPhone App Development是方法。 iPhone应用程序比Android应用程序产生的收入多85%。 制造iPhone App的不同动机包括: 根据屏幕详细信息进行了适合小工具的应用程序开发 高安全性 所有iOS应用程序都非常适合Apple小工具 苹果完全控制iPhone软件 顶级iPhone应用开发公司 HokuApps:iPhone应用程序开发 HokuApps是总部位于新加坡的公司,已经存在了一段时间。 HokuApps大力投入其iPhone应用程序开发阶段,使应用程序的速度提高了10倍。 他们有信心以低代码量快速处理应用程序,以处理应用程序开发。 需要支出计划和时间,这些人最适合您。HokuApps这样的公司为Hire iPhone应用程序设计师等管理人员提供了通过快速应用程序升级阶段制作iPhone应用程序的工作,该阶段通过重用细分来创建自定义的请求业务模块。 专长: HokuApps是发展最快的低代码平台,使公司能够以惊人的速度开发创新技术解决方案。 HokuApps是一家数字化转型公司,致力于提供Android,iOS移动应用程序开发(在几天而不是几周内开发移动应用程序)。 我们快速的应用程序开发平台增强了移动和数据集成功能,使公司能够快速部署移动和Web应用程序。 我们使公司能够启动其数字化转型之旅,以更好地与客户,合作伙伴和员工互动。 像Teddy Nissan,PTI QCS和Big Red这样充满活力的全球化企业,使用我们的平台来开发业务应用程序,以使他们的客户满意并提高运营水平。 Mobisoft Infotech: 他们认为,通过发展和无懈可击的想象力,可以将业务和创新带入更大的领域。 Mobisoft是项目推进和咨询管理公司。 他们与各种规模的新公司和组织合作,通过合并有问题的创新安排,逐步创建,增强和对比项目。 专业知识:六年来,他们与100多个应用程序开发人员合作,为100多个全球客户提供服务。 Mobomo: Mobomo是值得信赖的便携式iOS应用开发公司。 他们具有不可思议的经验,可以建立有价值的,可扩展的规模,并与便携式和响应式网站组合联系在一起。 他们的程序通过发现客户的需求和障碍来发现客户的亮点。 他们理解并询问客户应用程序中所有必要的微妙元素和必要性,并出色地找到Mobomo可以提供帮助的地方。 加油: Fueled是一项获得认可的多功能应用程序计划,是iOS应用程序开发公司。 他们的团队拥有独特的荣誉,并为新业务和可观的公司编造了各种应用程序。 […]