Tag: iOS应用开发

星期二-十一周

进入该阶段后,我们决定再次拆分以尝试找出如何填充数据库。 我做了以下教程: 核心数据教程入门 欢迎使用核心数据! 在本教程中,您将编写第一个Core Data应用程序。 您将看到获得它是多么容易…… www.raywenderlich.com 我的代码在这里: pelensky /命中清单 通过在GitHub上创建一个帐户来促进HitList开发。 github.com 现在,我要回家,明天再休息一天之前要休息一下。 我学到的东西 Xcode中的表格视图 Xcode中的单元测试 更好地从视图链接到模型 如何添加到核心数据数据库 我想专注的事情 在Xcode中变得更舒适 预填充核心数据数据库 在Swift中使用数据库 我正在努力的事情 有点累,但是没有代码相关

Xcode 8.3中有哪些新功能?

Swift 2.3弃用 Xcode 8.3 beta 2不再支持Swift 2.3。 请通过打开项目并选择“编辑”>“转换”>“转换为当前Swift语法”,将包含Swift 2.3代码的项目迁移到Swift 3语法。 其他折旧和拆除通知 自动化仪器已从仪器中删除。 在其位置使用Xcode的UI测试。 组织者 Xcode Organizer现在支持导出tvOS应用以进行企业分发。 测试中 在XCTest中添加了XCUISiriService类,以编写用于通过语音识别字符串激活Siri并在Siri UI中查询元素的测试。 使用该类为Intent和Intents UI扩展编写UI测试。 Swift编译器 Swift编译器现在可以自动预编译Objective-C桥接头,这可以加快带有大型桥接头的混合源项目的Debug配置版本(或其他非WMO版本)的速度。 此功能仍处于试验阶段,默认情况下处于禁用状态,但可以使用Xcode中的“预编译桥接头”(SWIFT_PRECOMPILE_BRIDGING_HEADER)构建配置设置来启用。 供应 更改了用于管理签名证书和配置文件的用户界面。 通过选择团队并单击“管理证书”,可以从“帐户”首选项窗格中管理证书。 建议自动管理签名,但是,如果您的应用需要手动签名,则可以在项目编辑器的“常规”选项卡中管理配置文件。 使用“供应配置文件”下拉列表导入或下载配置文件。 此外,它还显示与目标的当前签名配置匹配的配置文件。 仿真器 在Simulator的“设置”应用中启用Siri后,可以使用“硬件”>“ Siri”来调用Siri。 界面生成器 现在,在Interface Builder中创建的NSTextField对象默认情况下已关闭allowCharacterPickerTouchBarItem 。 Interface Builder支持设置AdjustsFontForContentSizeCategory设置,以在用户更改设置时自动调整动态类型。 建立系统 Xcode中的“ Precompile Bridging Header”构建配置设置默认情况下设置为YES。 这将激活Swift编译器对自动预编译Objective-C桥接标头的新支持,这可以加快具有大型桥接标头的混合源项目的Debug配置版本(或其他非WMO生成)的速度。

Swift 4中的命令模式

命令模式将请求封装为对象,从而使您可以将具有不同请求,队列或日志请求的客户端参数化,并支持不可撤销的操作。 当需求类似时,命令模式很有用–会有很多操作要做一个接一个的操作。 考虑到每个操作都非常耗时,因此您不能直接调用执行该操作的方法。 传入操作请求的速率高于整理每个操作。 要处理这种情况,您需要将每个操作/命令封装在一个对象(又称为命令对象)中,并将它们存储在队列中。 然后依次处理从队列中取出的每个命令。 这一切都与命令模式有关。 命令模式在日志记录框架,数据库事务和计划的操作中有多种用法。 Command模式的另一个不错的方面是Command Executor (可以是单独的线程)不需要知道命令以及与要执行的命令相关的上下文信息。 这样,可以随时构建更多的命令/操作,而无需更改已编写的现有代码。 类型:创作模式 也称为:动作,交易 结构体: Swift 4实现: 我们的上下文将是一个Book对象,我们要在其上执行不同类型的命令。 将有3种命令类型: Buy,Sell,GiftFriend 。 BuyCommand:从图书馆购买书籍,然后将所有者设置为我。 SellCommand:将书籍出售到图书馆,并将所有者设置为图书馆。 GiftFriend:将书赠给提到名字的朋友。 让我们编写上下文类Book。 您可能会对Book类中的buy(),sell(),giftFriend()之类的方法感到惊讶,并问自己这些方法应包含在命令类中。 没有! Command对象将调用这些方法,因为这些方法将执行实际任务。 如前所述,三种命令类: CommandExecutor负责一个接一个地运行命令。 它可能是一个不同的线程,但是为了简洁起见,在这里我们使用了while循环和runCommand()方法,它将一个接一个地运行所有命令,直到命令队列结束。 现在像往常一样,感受命令模式的力量。 您可以在此处找到完整的源代码:Github

Map vs Flatmap trong swift

–Các运算符chuyểnđổi数组​​trong swiftgồmcó:地图,平面图,归约。 Flatmapsẽfilterloạibỏnil let strs:[String?] = [“ a”,nil,“ b”,nil,“ c”] 令result = strs。 地图 {$ 0} print(result)// a nil b nil c let strs:[String?] = [“ a”,nil,“ b”,nil,“ c”] 令result = strs。 flatMap {$ 0} 打印(结果)// abc 让分数= [“ 1”,“ 2”,“三”,“ 4”] 让scoresInt =分数。 映射 {Int($ 0)} print(scoresInt)// 1 2无4 让分数= [“ 1”,“ 2”,“三”,“ 4”] […]

数据绑定的观察者模式的实现。

很多人可能听说过RxSwift —一种功能性反应式编程(FRP)框架。 它包含与处理数据流相关的大量功能,例如转换,过滤,将一个合并到另一个以及更多。 但是,如果您的项目不需要所有功能,而您只想对某些价值的变化做出反应,那么观察者模式就是您的首选解决方案! 今天,我将向您展示此模式的实现,它的应用以及作为奖励,如何以声明方式将可观察的值绑定到UI。 观察者模式有两个主要角色: Publisher-产生指示值已更改的事件的对象 观察者-对那些事件做出反应的对象。 首先,我们将专注于发布者类型,我们将其称为Variable 。 这将是带有通用参数E的类,该类指示观察值的类型。 我们来看一下Variable的接口。 它已指定将初始值设置为_value属性的初始化程序。 接下来,有两种主要方法: setValue(_:) —它将新值设置为_value属性,并通过使用新值调用所有观察者来通知类型(E) -> Void的所有观察者。 subscribe(_:) —将新的观察者添加到观察者数组中。 现在,我们可以使用Variable ,如下所示: 在这种情况下, Publisher是一个variable对象,而Observer是一个闭包,我们将其传递给subscribe(_:)方法。 现在,我们的发布者类型似乎很有用,但它缺乏非常重要的功能- 价值 转换 。 为此,我们将定义map(_:)方法。 顺便说一句,添加此方法将使Variable成为函子! 如果您对此概念感到好奇,请参阅Wiki。 这使我们可以进行如下操作: 控制台输出: Test Test-transformed 奖金部分 还记得我曾经说过的,您将可以将可观察的值绑定到UI吗? 干得好! 为此,我们将定义一个Bindable协议。 接下来,我们将添加一个自定义运算符 。 我们将其称为bind因为如果使用它可实现Bindable协议,我们会将Variable绑定到其他对象。 它只是bind(_:) Binder bind(_:)方法订阅到Variable 。 让我们使UILabel符合Bindable以启用绑定! 现在,变量绑定就像这样: 而已! 随时发表评论。 完整的源代码位于GitHub。您可以通过LinkedIn或Facebook与我联系。

วิธีการติดตั้ง

netfox —一个轻量级的单行设置iOS / OSX网络调试库! 🦊 ทำiOSมาได้เกือบสองปีละแต่ก่อนเวลาจะดู请求,响应งใช้องใช้Charlesซึ่งต้องต่อWi-Fi,ยวกัน,ตั้ง代理,信任证书วุ่นวายพอสมควร CharlesCharlesี้นiOSแล้วนะให้สิทธิ์แก้ไขการตั้งค่าของเครื่องไม่ต้องตั้งค่าอะไรวุ่นวายแต่ต้องซื้อแยก ดีอดีinอtools toolsอ工具มาตัวนึงชื่อว่าnetfoxทางสว่างก็เกิดขึ้นเลยมาบอกต่อสามารถใช้ได้ทั้งiOSและmacOS applicationนะครับ ซึ่ง工具ตัวนี้ผมว่าดีในมุมของการ调试เองและลดงานระหว่างdevและtesterเช่นนtesterสามารถดูได้เลยว่า请求,响应ถูกต้องหรือไม่ก่อนที่จะมาหาiOS devและถูกไล่ให้ไปหาAPI dev (ฮา)และไม่ต้องเสียบสายดูLogcat(นั่นมันAndroidตะลึงตึงโป๊ะ) Giากตรงนี้ไปก็ข้ามไปดูในGithub https://github.com/kasketis/netfoxได้เลยหรือจะอ่านต่อก็ได้ 椰子纲 ใช้ายมากถ้าcoรใช้ cocoapods ลืมPodเข้าไปตัวนึงที่ Podfile ได้เลยอย่าลืม user_framworks! ด้วย use_frameworks! pod’netfox’ pod install าร pod install ให้เรียบร้อย 迦太基 ใช้รือถ้าใครใช้迦太基ก็ใส่ลงไปใน Cartfile ว่า github“ kasketis / netfox” ็จแล้วก็ carthage update –platform iOS –cache-builds ได้เลย(อย่าลืมปรับ命令ดูได้ที่https://medium.com/@phai/84cf004cb35c) 应用程序代码应用程序代理功能应用程序完成FinishLaunchingWithOptions 迅速 อย่าลืม import netfox NFX.sharedInstance()。start() 目标C [[NFX […]

#iOS #Swift #Application中的#LocationServices

iOS无法直接访问该位置。如果要在iOS中使用该位置,我们需要征得许可。 要求许可取决于两个因素: 在应用运行时询问用户的位置。 在不运行时询问用户的位置。 有时您会同时需要这两个位置权限,例如,创建一个显示您当前位置到最近商店的距离的应用程序。 为此,您仅在使用应用程序时需要位置。 但是,如果您使用的应用程序每次用户更改位置时都需要更新位置,那么即使该应用程序未运行,您也将需要访问该位置。 如果您需要访问自己的位置,则需要在应用程序的info.plist文件中更改密钥。 密钥的更改取决于您的要求,是您需要“始终访问”还是仅在“使用时”。 更改info.plist文件的过程如下所述: 1.创建一个新项目,然后在项目导航器窗口中选择项目名称,该窗口是项目导航器中最顶层的文件。 2.然后在右侧窗口中,选择顶部的信息选项卡。 在此处阅读更多内容>> 如何在iOS Swift应用程序中处理位置服务

适用于初创企业的Firebase。 是还是不是?

几天前,我们的一个潜在客户伸出援手,问我们Firebase是否适合他们的移动项目。 他们是一家旅行社,为世界各地的包机服务,需要内部使用的应用程序。 他们需要一个iOS专家团队来发展他们的想法,这就是他们向我们提出的要求: 我想从您那里了解Firebase是否是我们项目的良好解决方案。 将来,我们希望将Firebase用作新网站的后端,我们也需要对其进行更新。 由于启动时只有两个人,所以我的回答是: Firebase对于大多数项目而言都是出色的-确实非常方便,并且由于您仅在启动时使用该应用程序,因此您无需为Firebase支付一毛钱,因为您不需要大量的带宽/连接。 Firebase是一种多合一的后端解决方案,您可以随用随付。 换句话说,您只需要在赚钱时付款即可(又名您的应用程序受欢迎并且许多用户使用它)。 总的来说,我认为这值得权衡。 我们在cesare上每天都会使用该平台,这就是它如此吸引人的原因: 我们构建的大多数应用程序都需要某种身份验证。 Firebase为您提供了不同的身份验证方法:通过电子邮件和密码,社交帐户(Facebook / Google / Twitter / GitHub)和电话号码(您向Google提供电话号码,然后Firebase向用户发送他们必须输入的验证码)该应用程序)。 验证用户就像编写几行代码一样容易。 Firebase可让您的用户进行身份验证,注册,重置密码和验证电子邮件。 如果您想节省开发时间(“快速移动并破坏工作”),也可以便宜使用预先构建的身份验证界面。 它被称为FirebaseUI,它是免费和开源的(尽管在我看来,它看起来并不那么好)。 Firebase有一个实时数据库,您可以在其中存储数据。 数据被分组到不同的“节点”中,这使整个事情与您可能习惯的(MySQL / Parse表)有很大不同。 在Firebase中,您定义了一些节点,例如“用户”,“邀请”,“项目”,然后添加了子节点(这些节点的子节点)。 您可以直接从界面添加/删除数据: 从此处的官方文档中了解有关使用Firebase构造数据的更多信息。 Firebase数据库的优点在于,每个平台(Web,iOS和Android)都可以访问它,从而使在设备和平台之间同步数据变得非常容易。 这意味着如果您决定今天构建一个iOS应用程序,则由于所有数据都存储在一个地方,因此您仍然可以构建一个Android应用程序。 问题在于,如果您想输入新数据,则此数据库界面可能会有些混乱且难以处理,因此许多客户要求我们构建一个网络仪表板(我们使用Google表格或Zapier),他们可以在其中添加或更改应用程序中显示的数据。 动态链接非常棒,因为在点击动态链接后,它们会将用户直接带到应用程序(如果未安装您的应用程序,则将用户带到应用程序商店或Play商店)。 链接可以包含大块数据(引用代码),从而实现全新的可能性(例如,用户可以使用它们邀请新成员加入组或项目并为此奖励)。 我们在一些项目中使用了动态链接,这些链接要求用户向其他用户发送“邀请”以加入小组。 Firebase为开发人员提供了内置的动态链接生成器,用户A可以使用该链接生成器来邀请用户B。用户B点击包含一些数据的链接,并将其重定向到应用程序(可以根据进行自定义用户流)。 这些只是我们真正喜欢Firebase的一些功能-我们每天都在使用它,我们的客户喜欢它,因此可以随时在Firebase上试用一下。 我个人计划在黑客马拉松上使用Firebase并开发一个GitHub库,用户将可以使用该库来调用Firebase函数-使其非常易于采用。 我相信Firebase是每个初创公司都必须使用的。 如果您在设置Firebase方面需要帮助,或者希望我们采纳您的启动想法并将其变为现实,我们可以为您提供帮助。 请在此处联系我们,我们将竭诚为您服务。

UITableView的自定义节标题

最近,作为iOS开发人员,有两种设计引起了我的注意:水平列表和自定义节标题。 开发人员和设计师为此付出了巨大的努力,因为应用程序的几乎所有部分都由表格视图组成。 由于水平列表不在本文的讨论范围之内,因此我打算只专注于制作自定义节标题。 老实说,制作自定义节标题不需要很大的努力。 我们将从包含TableViewCell的TableViewController开始。 根据您的选择,可以从TableViewController开始,也可以将TableView放在ViewController中。 我选择了最后一个。 下一步将添加带有其类的新xib文件。 我们将在另一个文件中设计节标题。 我喜欢部分地做事。 无论是简单还是困难,我都喜欢使用这种方法。 在这种情况下,这是必须的。 因此,添加一个Cocoa Touch类作为UITableViewHeaderFooterView的子类。 如果习惯于用类一起创建xib文件,您会感到惊讶,在这种情况下是不可能的。 我们应该单独创建一个xib。 您可以从“用户界面”部分执行此操作。 选择查看。 在添加新的xib时,您将意识到视图大小已固定。 您应该将大小选项从推断更改为自由格式,以使视图的大小可调整大小。 现在,您可以随意给节标题添加形状。 在本教程中,我们将仅添加两个标签,一个添加为大标题,而另一个添加为副标题。 形状良好后,为此在视图上放置两个标签。 我们一切都好。 不用说,在UITableViewHeaderFooterView子类中创建这些标签的出口。 我给此类命名为CustomSectionHeader。 这些出口分别命名为titleLabel和subtitleLabel。 现在,我们完成了这些类和xib文件。 无所事事。 仅要做的一项工作是我们应该在表视图中注册此xib。 您应该添加的最后一个代码如下: 仓库:https://github.com/onurtuna/custom-section-header

Swift – UINavigationController的层次结构(以编程方式)🎯

大家好,我们今天将讨论UINavigationController 。 🤠 UINavigationController允许您管理堆栈中的大量视图控制器。 我来解释一下 您有一个具有主 控制器 ,登录 控制器和注册控制器的应用程序,该应用程序开始在主控制器上运行, 您有两个按钮可以推动登录/注册控制器。 是的,您可以通过UINavigationController! 如何使用导航控制器(以编程方式,没有情节提要)设置项目 1-您必须删除项目上的.storyboard文件。 2-如下所示,您必须在项目导航器>选择项目>常规>部署信息>主界面上删除情节提要名称。 3- 让我们修改AppDelegate文件 我们在主控制器上有两个按钮, 您可以通过按钮来推送登录/注册控制器。 您可以在GitHub上访问项目文件。 😎 strawb3rryx7 / UINavigationController-示例 UINavigationController-示例–如何在没有情节提要的情况下创建基于UINavigationController的应用程序。 github.com 1-动态更改UINavigationController的rootViewController 这是一个好话题。 让我们解释一下, 为什么我们需要更改Root View Controller? 您的用户已成功登录到您的应用程序,然后在已经登录时终止了该应用程序。在下一次,您不希望他们能够遇到主控制器或 登录控制器。 因此,您将在启动应用程序时确定AppDelegate,可以确定它们是否已登录并相应地设置rootViewController 。 但是,是否要注销? 在这种情况下,您必须将其rootViewController设置为主控制器。 我将与您分享我的解决方案。 在此扩展中,您将能够设置新的rootViewController 。 我建议您遵循注释行。 我解释了他们在那里做什么。 另外,UINavigationBar有一些项目,如您在图像上看到的,这些项目在下面列出。 backItem topItem.title topItem.leftBarButtonItem topItem.rightBarButtonItem backItem 您可以将以前的控制器备份到导航堆栈中。 有一些属性可以管理它们,您可以在 Apple Docs 上找到它们 。 Apple文档提供的backBarButtonItem […]