Tag: iOS App开发

基本旅行应用程序—目的地美因河畔法兰克福

美因河畔法兰克福是德国的商业和金融中心。 就旅游,交通,商业和教育而言,它是世界上最重要的城市之一。 法兰克福展览公司是全球最大的贸易展览会之一,举办世界最大的汽车展,最大的书展,家用纺织品和商用纺织品贸易展览会以及其他此类展览会。 除了法兰克福的基础设施和经济以外,其多样性还支持充满活力的文化景观。 每年大约有400万游客参观法兰克福。 这是一个购物的好地方,因为它既迎合游客和当地居民。 参观法兰克福的最佳时间是春季末至初秋。 法兰克福拥有便捷的铁路,公路和航空连接。 为了很好地探索这个地方,对游客来说,有一个完美的向导至关重要。 在这篇博文中,我列出了一些必要的iPhone,iPad应用程序,这些应用程序将帮助您使旅途愉快。 法兰克福旅游指南和离线城市地图   : Ulmon GmbH 这是一个iOS应用程序,可为您提供城市地图,并且可以离线使用。 特别是对于游客,在国外保存数据和漫游费用非常重要。 该应用程序提供离线地图,深入的旅行见解,自定义路线并添加注释。 它是免费下载的,可在App Store中获得。 法兰克福市离线旅游指南 : B Revathi Devi 这是一款多功能应用程序,可作为您在法兰克福旅行的完整解决方案。 这个程序为您提供有关气候,地理等方面的信息。 此外,它还有助于通过地铁或步行在各个地方之间导航。 您可以找到酒店,自动取款机,旅游景点等。 自定义搜索也可用。 这个程序的价格为4.99 $,值得每一点。 法兰克福机场(FRA机场) : 法兰克福机场 这是在法兰克福机场中应该拥有的最重要的应用程序之一。 这是法兰克福机场服务全球公司的官方应用程序-法兰克福机场服务。 通过扫描登机牌获取有关航班的详细信息,计算退税额,还可以通过该应用程序预订停车位。 事实证明,此应用程序在机场的导航和通知方面是最好的。 它是App Store中提供的免费应用程序。 法兰克福指南 : 完全真实 这个应用程式是当地旅游指南中另一个很棒的应用程式。 这又是一个完全脱机的应用程序,可帮助您找到附近的酒店,比较它们的价格并进行预订。 另外,您可以看到地铁导航线。 这也是应用商店中适用于iPhone和iPad的免费应用。 法兰克福S-Bahn和U-Bahn :锦葵技术 这是一个很棒的应用程序,可以通过他们的火车系统在法兰克福进行导航。 从任何地方到任何地方,您都可以得到将S-Bhan和U-Bhan路线互连的火车路线,以提供最佳和最佳的路线计划。 该应用程序还具有货币转换器,以方便用户使用。 它也有参加展览会的地方梅西厅的蓝图。 该应用程序成为商务旅客的最佳应用程序之一,他们可以参观贸易展览会以及希望在整个城市旅行的游客。 […]

在Swift中编写更好的单元测试:第二部分

问题 在本系列的第一部分中,我定义了我认为是“良好”的单元测试。 这是我最终得到的定义: 如果我们可以同意一个单元测试(或者实际上是任何一个测试)是由一些设置 ,我们正在测试的动作以及关于该动作效果的断言组成的,那么我可以这么简单地说,一种“好的”单元测试可以使这三个组件中的每一个都清晰可见。 您可能还记得,我们以如下所示的测试结束了这篇文章: var sut,其他:用户! func test_equals_allPropertiesMatch_isTrue(){ (sut,other)=(.create(),.create()) XCTAssertEqual(ut,其他) XCTAssertEqual(other,sut) } func test_equals_nameDiffers_isFalse(){ (其他)=(.create(name:“ Jo”),.create()) XCTAssertNotEqual(sut,其他) XCTAssertNotEqual(other,sut) } 我们压缩了设置,以便测试主体仅包含对测试场景重要的信息。 例如,当重要的是两个用户对象的名称不同时,我们在设置中仅包括该信息。 这是提高测试总体可读性的好方法。 但是,我们还有更多可以做的事情。 您可能查看了上述测试,并认为“设置还可以,但是为什么在这里却有两个断言呢?”很好的问题! 我很高兴您关注这个问题。 请记住,以上测试涵盖了User类型上的==函数。 在不给您带来全部数学负担的情况下,平等是“等价关系”的一个示例,而关于等价关系的重要内容之一就是对称性的概念。 简而言之,如果我有两个某种类型的实例a和b ,则永远不会出现a == b为true但b == a为false的情况。 如果这是可能的,那么我们对平等的定义是有缺陷的。 因此,有必要验证我们的==的自定义定义是对称的。 但是,仅看那里的两个断言,就完全不清楚这是意图。 这些测试只是在断言一件事。 经过一段时间和倾向,其他工程师可能会弄清楚为什么我们添加第二个断言,但是我们绝对可以做得更好。 但是…如何? 解决方案 让我们开始做我们可能想到的最简单的事情。 我们有两行代码,而我们只想有一行代码。 解决方案? 一个功能! func assertSymmetricallyEqual(_ sut:用户,_其他:用户){ XCTAssertEqual(ut,其他) XCTAssertEqual(other,sut) } (注意:这里我们专注于测试是否相等,但是对于不平等,您可以做完全相同的事情)。 现在我们的测试变为: var […]

我们学到的以12种语言启动Keepsafe的知识

在App Store中启动应用程序时,您会研究人们将用来查找您的应用程序的关键字。 通常,您会根据搜索量和难度(即关键字的竞争程度)对关键字进行优先级排序。 您可以在应用程序标题中包含关键字(最多50个字符),关键字还有100个字符。 在标题和关键字列表中两次使用相同的关键字没有任何好处。 但是,您希望包含所有可能的关键字,并有最大的机会被感兴趣的人发现。 而且,您还想尝试应用的关键字,以查看效果最佳的关键字。 当您针对全球市场本地化应用程序时,此练习的规模会迅速变得复杂,因为搜索词在不同语言和国家/地区的排名会有所不同。 这是构建App Store关键字优化工具时要解决的用例。 该工具最好一次在每个市场上用于一个应用程序。 运作方式如下: 在正确的文本字段(“所有关键字”)中排列关键字列表的优先级。 他们将填充“调整后的关键字”列表(自动删除空格并以逗号分隔关键字以最大化字符空间) 制定标题(标题中使用的关键字变为绿色,并从“调整后的关键字”列表中删除 超出字符数限制的关键字标记为红色 尝试一下该工具,看看我们的应用程序家族,包括Keepsafe Photo Vault,它可以锁定只供您观看的私人照片! 我们还聘用了像创建此工具一样的优秀工程师来帮助我们构建一系列保护人们个人空间的应用程序。 这是一个令人难以置信的机会,让您自己的手工艺触动数百万人。

Swift中的Redux模式

在Swift中进行Redux吗? 是否可以在Eine iOS App中恢复JavaScript库并消除JS Zeug残酷的问题? 在设计模式和建筑设计中的修女,以及其他的书目。 标准MVC模式和ViewController之间的问题,由Gerl mal ins Endlose reichen负责。 Testbarkeit istfürnArsch,死于Übersichtüberdas ganze Projekt。 Dann haben wir noch den viel zu oft kopierten Code um wieder and wieder die gleichen Dingeauszuführenetc pp。 Natürlichgibt es daunzähligeMöglichkeiten(Wie immer)死于问题zulösen。 iOS Swift Blase lebe的应用程序之类的应用程序,以及React Native的其他应用程序。React.js在Webprojekte网站上的发布,请立即订阅。 Eine kleineErläuterung,我们的人eigentlich sich dieMühemachte,sich das Redux Prinzip zuüberlegen: 在React ist中,Komponenten aufgebaut ist中的dass eine […]

iOS培训课程—精通处理iPhone应用程序

iOS培训课程—精通处理iPhone应用程序 毫无疑问,iPhone在用户中颇受欢迎。 这是整个印度iOS开发人员需求增长的主要原因。 借助理想的培训课程和经验,成为iOS开发人员可以带来比您期望的特别的东西。 从这个事实,可以希望iPhone的用户也有了重要的增长。 有很多有抱负的学生正在寻找 一个 iOS培训课程 学习技术和进步。 为什么要成为iOS开发人员? 在接下来的几年中,对iOS开发人员的需求将会非常高。 我们所有人都在轻松灵活的帮助下忙于活动。 如今,在移动应用程序的支持下,支付账单,购物和转移现金等所有任务都已结束。 另一个重要事实是时间紧缺,并且希望避免复杂性,这使人们经常将移动应用程序用于日常任务。 毫无疑问,iOS开发人员的未来简直是惊人的。 您可以赚到比您梦想中更多的钱。要克服这一点,移动开发人员需要认可他们的技能并确认他们一直在需求。 为什么要加入iOS培训课程? 通过成为iOS培训课程的一部分,该课程非常有助于不断提升技能。 熟悉IT领域中不断变化的趋势。 因此,更好地同情特殊的优势,缺点甚至技能,并选择iOS培训课程。 如何选择 iOS Training Institute ? 毫无疑问,对于每个人来说,找到合适的援助不再是艰巨的任务。 从一个好的机构那里找到iPhone培训一点也不难。 只是经过iOS培训的发现并不能保证将来度过一个愉快的假期。 您需要选择一个熟悉如何生存iOS应用程序开发计划的培训机构。 当然,如果培训机构提供iPhone应用程序开发服务,那将是您真正的义务……。阅读更多https://www.slaconsultantsindia.com/ios-training-course-become-proficient-in-handling-iphone-applications/

移动应用程序和大数据-未来的组合?

移动用户被视为访问Web内容的未来的时代已经过去很久了。 自从移动用户接管PC用户到Internet使用已经过去了将近两年。 如此大量的人一直使用手机的结果之一就是,移动用户正在使用大量的数据。 这将我们带入了“未来组合”的其他组成部分-大数据。 什么是大数据? 关于什么是大数据尚无定论。 即,该词没有最终的和真实的定义。 从本质上讲,大数据是一组具有三个以“ V”开头的属性的数据,即体积,速度和多样性。 换句话说,大数据是巨大的,信息是多种多样的,并且可以快速获取。 如今,大数据之所以成为流行语,是因为它具有巨大的潜力,可以提供对几乎所有事物的更好的洞察力,并且由于拥有如此丰富的数据,使那些能够访问大数据的人能够做出更好的决策。 如果您想进一步了解它,可以查看这篇文章,其中一些非常聪明的人解释了他们的看法。 移动大数据有多大? 我们已经提到过移动用户会产生大量数据,但是我们在谈论什么比例呢? 嗯,根据思科的最新移动数据统计,到2015年底,全球移动数据流量为每月3.7艾字节。 仅从角度看,一个1 EB等于一百万TB。 换句话说,十亿千兆字节。 每月。 总之,它绝对满足“体积”标准。 考虑到移动用户可以执行多少种不同的动作以及他们通过移动设备共享的信息有多大差异; 可以肯定地说,移动数据也符合“多样化”标准。 应该指出的是,这些数据的很大一部分涉及某种应用程序。 最后,由于全球不断使用(79亿)个移动设备,因此毫无疑问,移动数据也很快可用。 可以学到什么? 可以从移动应用程序中获得的见解的类型和数量将取决于“用户”的身份,即获取和分析数据的公司(或任何其他类型的组织)。 例如,设备制造商可以学到很多有关他们的用户如何使用他们的设备,他们使用它们的目的以及他们可以在后代中包含哪些新功能的信息。 例如,仅通过查看社交媒体趋势和活动,业务分析师和营销人员就可以获得有关他们的客户和潜在客户的无限知识。 开发和启动自己的应用程序的人还可以深入了解他们的用户和潜在的未来用户。 除其他外,他们可以了解他们的应用程序的哪些功能最常使用,哪些功能毫无意义。 他们还可以注意到其应用程序的功能和用户在使用其应用程序时显示的模式方面的问题。 如何使用见解 在使用或什至将这些新见解用于上下文之前,获取所有这些数据(或部分数据)的组织将必须找到一种分析数据的方法。 这是商业智能软件解决方案以及专门分析移动大数据的公司展示其实力的地方。 一旦“净化”并压缩了大数据,所有不同类型的用户都可以充分利用它们。 例如,公司可以使用其新见解来修改其运营的某些方面。 如果他们了解到客户将客户留给了提供更好客户服务或类似服务的公司,则可以改善组织的这一部分。 营销人员可以将精力集中在特定的细分市场上,或者在产品/服务仍缺乏吸引力的那些细分市场上加大力度。 对于应用程序开发人员而言,移动大数据可以极大地改善其工作的各个方面。 它们可以包含以前认为没有用的功能。 他们可以根据用户反馈和对其他应用程序用户的分析来更改设计。 简而言之,他们可以使用数据来创建最终的应用程序,这将带来惊人的采用率以及保留率。 闭幕词 移动应用程序,其用户和大数据构成了每个人都将获胜的惊人组合。 借助大数据,大数据变得更大,移动应用程序也变得更好。 未来就在眼前,这无可厚非。

iOS:如何在Xcode项目中使用FontAwesome。

对图标使用超赞字体的好处是,您可以像对待文本一样对待它们。 它消除了使用同一图标的各种大小或各种颜色的png的需要,因为您只需设置字体大小或字体颜色即可产生您想要的效果。 从http://fontawesome.io/下载font-awesome 2.将fontawesome-webfont.ttf添加到您的项目。 3.确保已在要使用字体的目标中检查fontawesome-webfont.ttf文件的成员身份。 您可以通过在项目导航器中选择文件来执行此操作。 4.打开项目的Info.plist文件,然后添加项“您的应用程序中提供的字体”,并在其下添加.ttf文件的名称。 5.现在打开http://fontawesome.io/cheatsheet/并选择所需的“图标”,如下所示,然后按“ command + c”,即复制 6.现在,使用界面生成器打开xib。 假设我们在按钮上使用此图标,如下所示。 现在选择按钮,然后将复制的图标粘贴到“属性”检查器中显示的“ 标题”字段中。 之后,选择按钮的字体为“ FontAwesome”。 您也可以通过编程方式确定设置。

POP(面向协议的编程)-简介

在此处找到原始帖子。 前言 计算机是由多个硬件组件组成的复杂机器。 然后是一个软件层,可以有效地利用这些组件来执行所需的任务。 这些复杂的机器很多时候互相交谈以共享信息或委派一些任务。 所有这些任务在某个时间点都会处理数据。 对整个生态系统的研究被广泛称为计算机科学。 科学领域,其整个重点是使一组任务自动化。 我们将不断发展和改善现有的生态系统,并期望它能为我们做更多的事情。 在硬件组件上不时有值得称赞的改进。 随后,我们改进了软件方法,以充分利用这些笨拙的组件。 我们发明了操作系统,内核,编译器,并逐步对其进行改进以与硬件相匹配。 为了构建这些功能强大的软件,需要开发出具有更多功能和更多功能的新编程语言。 每种编程语言均出于一组目的而存在,并且支持一个或多个编程范例。 这样的范例之一就是面向对象的编程(OOP),它于1960年代初期引入,并从那时起被广泛使用。 这种范式要求我们根据对象来思考一切。 OOP通过其核心原理(抽象,封装,继承和多态性)具有解决现实问题的强大能力。 因此,许多编程语言已成为OOP的主要范例。 诸如C ++,JAVA,Objective-C等OOP语言通过分类,子分类,方法重载,抽象(协议)等支持了核心原理。 不过有一些注意事项– 所有这些功能仅可用于对象(引用类型)。 诸如结构和枚举之类的值类型无法利用这些功能,因此它们仅保留了数据存储空间而已。 我们失去了值类型是线程安全的巨大优势。 结果,我们不懈地致力于解决对象(引用)的线程安全问题。 同样,大多数OOP语言由于其性质的复杂性而不支持多重继承,因此不支持多重继承。 例如:假设歌手和演员都从其父艺术家Artist继承,他们都免费获得了Artist实现的通用功能 但是,如果要求说某些歌手也可能是演员,那么继承树将看起来像– 在这里,我们也将每个歌手都设置为演员 ,当歌手不是演员时,这会强制不相关的功能。 期望 这些惊人的OOP功能也应该有一种可用于值类型的方法,这样我们就不必担心解决线程安全的成本。 而且,如果我们可以在不给我们的类型带来太多复杂性的情况下带来多重继承,那么我们就可以完全避免上述问题。 解决方案—面向协议的方法 时间需要不同的思维方式。 超越OO方式的思考。 面向协议的方法。 但是首先,什么是协议? 协议是一组规则和要求(方法和属性),类型(值或引用)需要满足。 将协议视为其要求的抽象蓝图。 一个类型可以相应地实现这些要求,并称其符合协议。 此外,一种类型可以符合多种协议。 让我们尝试通过面向协议的方法来解决上述问题– 我们声明了三个协议, 艺术家 , 演员和歌手 。 演员和歌手都继承自Artist协议。 每个协议都已声明其要求。 例如,符合Artist协议的类型需要在其实现中定义名称和年龄。 同样,符合Singer协议的类型需要提供name , age , […]

(iOS)人机界面指南_控件

Controls控件列表。 纽扣 扣틀의의텀텀틀틀틀틀틀틀틀틀틀틀틀틀틀틀틀틀틀틀틀。 1–1系统按钮 系统按钮은导航栏나工具栏에서에서이보며버튼입니다。 제목에용하여사를정특정동작이도와줍니지도와줍니다。 제목에다。 목은유하여하여발생하발생하발생하발생하발생하합니다。 。스템리테두이나정설지되어지않습니다。 。리테두가합니다。 1-2详细信息披露按钮 细节披露버튼은정나타나는정항목과가정보또는기사보다。 1-3个信息按钮 信息按钮고고。알려주위한위한위한버튼입니다버튼입니다。 1-4添加联系人按钮 单击“添加联系人按钮”,然后单击“添加联系人”。 。메시의받는의받는의받는추추있습니있습니있습니있습니있습니있습니다 添加联系人按钮Contact정보를 정정보제입니 입니다。 만로만로용할이있지만만만드이장점 를를。 2.编辑菜单 在“编辑菜单”上,单击“双击”,然后单击“双击”。 。합니합니다。 면다면编辑菜单选项합니다적절하게정하여야다。 않도록않도록않도록른른와른른른않않않않도록합니다。 编辑菜单실행하였지,사용자가사놓습니지,로,놓습니다。 用户自定义命令는系统命令다합니다。 自定义命令하고하고하고。다합니다。 3.标签 标签을이용하여이스요소를지메세를지를제공합니다。 在Label Label만없없지中,在Label Label복사있습니다中。 标签은쉽도록으텍트트트를있게’Dynamic Type’으로설정것이좋습니다。 标签의유하는하는이장다。 4.页面控件 Page Control(页面控制)和3DS(3位)。 용할이。가열려있는로나타납니로나타납니다나타납니다。 나타내는데요를이지를。 。보이는이미지에서는페이지가보있습니지있습니다。 页面控制, 分层页面 ,页面控制,页面控制,页面控制,页面控制,页面控制和页面控制。 页面控制。정해야다합니다。 5.选择器 Picker스크롤을상의크롤을하나포함합니다。 가텍보이는스트에이。다。 Date Picker네가지모드가있으며다선택로선택로있습니다。 날짜: 월,표시합니다。 […]

Swift中与日期相关的当前代码的确定性单元测试

自从我在Envelope框架上发表我的上一篇文章以来已经有一段时间了-Alamofire周围的薄包装使编写网络代码的单元测试变得轻而易举。 可能一开始这篇文章太大了,但是无论如何我都希望听到更多的反馈。今天,我将分享我几年前一直在使用的一个非常简单的技巧,该技巧简化了另一个方面编写单元测试的方法:测试使用当前日期/时间的代码。 问题 因此,想象一下您正在编写一种方法,如果记录已过期,则请求更新记录: 在这里, entityManager是一个对象,负责通过id请求和存储对记录的更新。 如何对这种功能进行单元测试? 看到问题了吗? 我们需要一个nonExpiredRecord ,即条件为record.lastUpdateTime <= dateOfExpiration为false的Record实例。 因此, RecordFixture.nonExpiredRecord()应该生成一个带有lastUpdateTime更新为当前时间的记录! 想象一下,当Record是一个struct时,会是什么样子–您将必须复制该结构的所有字段,并用当前日期更新一个字段。 甚至更糟的是,当这样的设备来自例如保存的网络响应时,其模式可能会随着时间而变化,支持这样的测试代码变得很痛苦,并且是CI失败的根源。 即使夹具的结构正确,但如果经过了实际时间,在调试器中单步执行功能也可能导致将条件评估为错误的结果。 解决方案 冻结时间。 /明显的模式开启/单元测试应该是确定性的。 甚至那些处理当前时间的事件。 /关闭明显的模式/ 想象一下,在单元测试套件下运行时调用Date()总是会返回,例如, 1 January 2016 12:00GMT ? 然后为总是“未过期”的记录创建测试夹具将是微不足道的,不是吗? 那么,如何在单元测试中覆盖Date() ,使其返回预定义的日期呢? 不管是好是坏,这是不可能直接实现的—复杂的方法实现现在已经成为过去。 我们可以做的是: 提供Date()的替代方法,该替代方法将在正常程序执行下返回当前日期,并具有单元测试套件覆盖其行为的能力; 在测试套件中,将其覆盖以始终返回预定义的日期; 禁止使用lint规则或git pre-commit钩子,或同时使用这两种方法在源代码中使用Date()初始值设定项。 让我们一步一步地做。 1.提供获取当前日期的替代方法。 2.覆盖测试套件下的当前日期行为。 如果未使用Quick ,则可以通过重写单元测试套件类的class func load()函数来完成相同的操作。 因此,现在,在测试套件中运行时,主应用程序模块中调用Date.current的代码将始终返回Date.mockDate的值,因此测试治具现在可以是常量(例如,从保存的JSON加载),也可以构造使用已知的模拟日期: 3.禁止在代码中使用Date() 。 让我们在git pre-commit钩子脚本中添加一个部分,并使用简单的regexp查找所有出现在舞台区域的Date()模式的出现: 骇客入侵!