Tag: 编程

语音识别

使用框架语音识别的应用程序可在iOS上重新安装。 苹果公司的语音识别框架是基于语音识别的 。 Todos作为信息服务对象,是API的重要组成部分。 您可以在casa fique algumadúvidaou haja alguma信息服务中找到您想要的产品,也可以在casa fique sem deixar seucomentário中找到。 Eu ficarei feliz em ajudar etambémde corrigir o queéénecessário。 🤓 Entãovamoslá!!! iOS上的Voz维修 Apple或Swift框架的补充说明。 在WWDC 2016上将在iOS 10或Windows Server 2003框架上进行发布,并在框架上进行语音转换,以确保最终的结果。 Antes dessaversão,existiam algumas bibliotecas de terceiros criadas组成了mesma finalidade。 Mas com sta nova API或pos集成商。 有关军刀的信息: 可以在互联网上通过电子邮件与苹果的娱乐系统进行互通。 “没有法律规定的赔偿,……没有苹果公司规定的再保险准则”。 存在的限制和修复的最小限度。 保留重要意义的权利。 苹果公司提供的法律保护,一种法律上的先决条件。 由使用自动驾驶汽车的重要动机,侦探科摩拉·塞拉萨达,骑自行车的德克桑多·德·曼尼拉·克拉拉,公共安全的使用费。 删除所有Github的声音! Ésóacessar! 普罗耶托 Crie […]

SWIFT中的OOP

OOP(面向对象编程) ,这是一个由三个字母组成的神奇词,几乎所有现代编程语言都可以使用该词。 SWIFT和APPLE的流行语言与此没有什么不同。 OOP概念是SWIFT的基础。 我已经指出的是,许多开发人员未能关联OOP的概念。 并不是我们不了解OOP,只是我们无法关联应用程序。 因此,伙计们有时间以SWIFTY的方式重新审视基本的OOP概念。 糟糕,我们将与SWIFT一同推出…..地狱……!!! 好的,我们将以SWIFTY方式介绍以下OOP的基本概念: 班级 对象 物产 方法 访问控制 封装形式 抽象化 遗产 方法重载 方法重载 多态性 我不相信技术定义,而是会通过实现相同示例的iOS示例以更现实的方式理解这些概念。 我建议您在操场上尝试一下。 :] 类: 可以将类与某个特定项目或物体或生物所属的真实世界组进行比较,并且每个组都具有与该组中存在的相似的属性。 例如-将“人”视为一个小组或班级。 无论男女,每个人都有共同的属性和属性。 码: 类人{ //您的个人属性和能力可以在此处定义。 //如果你是吸血鬼,不要写;] } 我们在这里做了什么: 我们宣布一堂课。 iOS示例: iOS的主要UI类UIView可以视为一个类。 对象: 对象是您看到的来自特定类的任何东西。 例如,狗,猫,钢笔,铅笔等,一切都是物体。 从我们的“人物”示例中,男人和女人是属于同一类(即“人物”)的对象的示例。 码: let man = Person() //我们创建了一个Person对象 我们在这里做了什么: 我们通过实例化创建了该类的对象。 iOS示例: 创建UITableView的出口时,我们将创建UITableView类的对象。 特性: 让我们再次回到前面的Person示例。 正如我之前所说的,每个人都具有一些共同的属性,特性和功能,而在所有群体中它们都是相同的,例如我们属于特定的性别,肤色,年龄等。因此,这些可以称为人的特性。类。 从技术上讲,类的属性是该类的公共属性,可以在派生自该对象的每个对象之间共享。 码: […]

如何使用Swift处理“#”和“ @”超链接!

过去,使用“#”和“ @”进行工作对我来说一直是一项具有挑战性的工作,但是我终于找到了一种处理问题的好方法。 设置 首先,这在TextView中效果最好。 因此,可以根据需要在视图内部设置一个,但请确保ViewController具有UITextViewDelegate并将textView委托给该视图控制器。 我也使用一些预填充的信息来执行此操作,但是相同的概念适用于从数据库中提取数据,而并非如此。 [为了教程起见,我使用情节提要板设置了textView。 快速简单。 不要伤害我。] 这是我们设置ViewController的方式: ViewController类:UIViewController,UITextViewDelegate { var string =“您好,我叫@Jared&#Jared,我喜欢移动它。” @IBOutlet弱var textView:UITextView! 覆盖func viewDidLoad(){ super.viewDidLoad() textView.text =字符串 textView.delegate =自我 } … 符号解析 现在,我们进入真正的坚韧不拔的东西! (呜!) 我们在这部分中要完成的总体任务只是将textView中的所有单词拆分开。 它比您想象的要简单: 首先,让我们创建扩展: 扩展UITextView { func resolveTags(){ [向前,这只是将内容添加到resolveTags函数中,直到我另外声明为止] 将我们的字符串转换为NSString。 这允许分离组件。 让nsText:NSString = self.text作为NSString 使用.compenents(separatedBy:“”)<-将该单词分开,在引号中包括该空格。 这将使我们能够分解单个单词。 让单词:[String] = nsText.components(separatedBy:“”) 为您希望文本在TextView中显示的内容设置几个属性。 这些属性将应用于您调用resolveTags的任何TextView,因此请执行以下操作: 令attrs = [ NSAttributedStringKey.font:UIFont.init(名称:“ HelveticaNeue”,大小:13), NSAttributedStringKey.foregroundColor:UIColor.black […]

SWIFTip#4:本周的随意见解

快速学习。 这是每周的见解,可增强Swift良好实践的技能。 如果您对快速学习者有更好的建议,请发表评论。 谢谢。 #TerminalCommandXcode 我整天在终端中使用哪些命令? 每天我使用很多不同的工具。 您知道我的意思是,您已经阅读了5.9K,非常感谢。 ☺️medium.com #iOSDevelopmentBrief iOS开发教学大纲* NoviceDock 欢迎来到Apple移动平台的世界,您必须在这里了解iOS开发的基础知识。 在这里,我们… novicedock.com #Top10SwiftArticleNov2017 Swift过去一个月的十大文章(v.Nov 2017) 在过去的一个月中,我们对近1,000篇Swift文章进行了排名,以挑选可以帮助您改进iOS的十大故事 。 #iOS通讯 您应该了解的15条iOS最佳时事通讯 medium.com #UIPrintInteractionController Airprint iOS教程 在iOS 8中,开发人员可以将TouchID添加到其应用程序中.TouchID基于本地身份验证框架。 在… www.ioscreator.com

我们为什么参加会议? #dotSwift🇫🇷

介绍 作为开发人员,您知道技术在不断发展。 因此,为了成功,您也需要不断发展。 您可以使用书籍,课程,论坛等,但是今天我将讨论会议,尤其是一个会议, dotSwift (适用于iOS和Mac开发人员)。 本文旨在帮助您了解是否适合您的开发者会议。 然后,您可以判断是否值得参加这样的会议。 会议 dotSwift 2019于1月28日在巴黎举行。 大门在下午12点打开以进行注册和联网。 第一次谈话是在下午1点,因此我们有足够的时间结识新朋友,还可以挑选一些免费赠品,例如dotSwift球和照明充电器。 我在这里与Future Platforms的同事Damien,BBC的Dani和前Moonpig的Alberto在一起。 讲者 整个会议期间都有很多演讲者。 dotSwift为观众中的所有级别的开发人员进行了讨论。 每个人都有东西。 我并不是每天都可以与Apple的工作人员交谈,因此能够聆听Johannes真是太好了,Johannes提出了一些低级技巧来提高性能。 对于像Lea这样的其他人,可以从更高的角度解释如何处理单元标识符 。 谁曾经使用标识符重用 UITableViewCell 子类? 我获得了使用Lea关于泛型的代码示例的许可。 它允许开发人员删除不必要的标识符,并通过单元类推断它们。 许多景点可以参观,例如巴黎圣母院,凯旋门等。 夜间是在巴黎参观一些景点的合适时间 。 卢浮宫博物馆展出的最著名的莱昂纳多·达·芬奇照片,其外表非常漂亮。 第二天,星期天,我们走进了埃菲尔铁塔。 有点拖拉总是很好的,尽管老实说,这是我一直随身携带的小雨伞,因为它适合放在我的背包里。 幸运的是,法国人民似乎还有更多重要的问题要担心。 优步池 关于城市的夜生活,没有音乐的生活是什么? 我创建了一个播放列表,其中包含在巴黎听到的几首“时髦”歌曲。 这些是当我跳到Uber背后时,一些当地巴黎人正在听的歌! 我们看到了什么? 到目前为止,到目前为止,我们已经谈到了会议及其举办城市的话题。 评估关键点,看看是否值得这样做,这将是一些关键的利弊。 优点✅ 学习和提高 联网 发现 旅游 缺点👎🏼 天气(直到您参观巴黎,英国的天气才不好) 一天的会议很短,相关的培训费用很高。 结论 我可以说我很幸运,之前在今年夏天的AltConf会议上与Dani会面(会议在圣何塞的WWDC旁边并行举行),他谈到了可访问性。 所以我已经知道有人要去dotSwift了。 詹姆斯·邓普西(James Dumpsey)每年都与AltConf接近,与他的小组“ The […]

在Swift中实现编程语言—第6部分:解析变量

注意:这是“用Swift编写编程语言”教程系列的第六部分。一定要检查 以前的内容 。 在之前的教程中,我们创建了第一个解释器。 现在是时候使用一些真正的编程语言功能来启动它,首先是对变量的支持。 为了提供可变支持,我们的语言需要两个附加功能: 支持解析变量名 支持声明变量 本教程全部关于第一(“支持解析变量名”)。 解析变量名。 此功能会创建两种错误情况,首先将它们添加到Parser.Error枚举中: 枚举错误:Swift.Error { 预期情况 预期大小写 预期情况 预期情况 预期大小写(字符串) case notDefined(String) } 添加对解析变量的支持相当简单,只需执行几个简单的步骤。 首先,我们需要在Lexer中添加对变量名称的支持。 为此,我们要做的就是将一个案例identifier添加到我们的Token枚举以及一个生成器: 枚举令牌{ typealias Generator =(String)->令牌? 案例操作员(操作员) 案例号(浮点数) 案例解析 案例解析 案例标识符(字符串) 静态var生成器:[String:Generator] { 返回[ “ \\ * | \\ / | \\ + | \\-”:{.op(Operator(rawValue:$ 0)!)}, “ \\-?([0-9] * \\。[0-9] + | [0-9] […]

anagram-go-java:Go和Java并排使用-​​旧的编码器回头看Java

昨天,我摸索了一个简单的面试问题。 这是我第一次使用coderpad.io(聪明的主意),也许是我第一次有人在编码时看着我的肩膀,而没有允许一两个StackOverflow。 面试官真的希望我用Java做到这一点,这让我感到不安,我已经使用Go编码了一段时间,并尝试使用Go进行编码。 我用注释将其伪编码出来,然后迅速间隔一下如何在Go中从字符串中获取该死的字符。 叹。 所以,我决定写这篇文章作为减轻自己对自己的失望的pen悔。 我现在正在为多种项目使用3种不同的语言:Go,Python和Swift(很好,Swift 3)。 老实说,我只是不保持这三个语法的全部一致性,我在编码时会进行很多模式匹配/复制/粘贴,并且很少再逐个关键字地将其键入。 我想,我上一次这样做是在1988-1992年的时间范围内使用Objective-C。 现在,当我使用这些微模式时,我的编码要好得多,并且在整个代码库中一切看起来都一样。 面试结束不到5分钟,我就可以使用Go版本了。 然后,今天早上,我以为,经过了这么多年,我又回过头去做同样的事情,被翻译成Java。 我猜想花了太长时间,但这让我想起了过去十年来我忘记了Java的东西,而我却忽略了它。 它也显示了一个有趣的案例,其中可以比较Go和Java,而Go表现得很好(IMHO)。 以及“ map:hashtable”一词; 它是“ Go:Java”,因此Go中的地图几乎是Java中的Hashtable。 恩比恩? 杰,好的。 测试数据: anagram(aab,aba)= true anagram(aab,cab)=否 anagram(aab,abdcefghijklmnopqrstuvwxyz)=否 //而且我知道,我知道(您是行家)符文**, //但他说,不,只是一个简单的字符串。 首先,我决定将字谜决定放到一个函子中。 // 走 func anagram(x,y string)bool { // Java public boolean anagram(String x,String y){ //’x’是第一个字符串 //’y’是第二个字符串 //如果它们是彼此的字母,则返回true //否则返回false。 我在两个特殊情况下进行了几次快速检查,以使例程短路:1)如果X等于Y(因此字符串相同),则返回true。 (在字谜的某些定义中,这可能并非严格正确 )。 2)如果两个字符串的长度不同,那么它们不是字谜,则返回false。 现在,在Go世界中,有两种方法可以声明map:hashtable ,其中键是字符串,值是整数。 但是基本思想是键/值存储库之一,将其作为键的值,然后当您通过键要求时将其取回。 (我记得Dictionary是Java的东西,不是吗?还是它一直是抽象类型?但是现在我知道Dictionary已过时了,请改用Map接口。) // […]

Swift 4.0数据类型转换基础

您阅读了我的上一篇文章,这有点令人不解。 iOS SDK,Xcode IDE和Swift语法的每个方面都经过精心设计,因此,为什么文档在词汇上如此密集,背后却有着超现实的光彩。 我认为最有效的学习方法是将所学内容分解为可管理的组件。 对于那些没有Apple计算机的人,本周您将不需要一台计算机。 您只需要使用它。 继续并在新标签页或窗口中打开此链接,或使其并排打开,如下所示! 好吧,我们知道Swift是Chris Lattner在他的最高机密实验室中起草的完全酷的编程语言。 但是,自成为开放源代码以来,Swift的普及程度已大大提高,甚至Google也在帮助该语言的发展。 现在,比以往任何时候都更是学习敏捷的好时机。 即使您不了解面向对象的编程。 在我的博客中,我将帮助您学习基础知识,面向对象的编程等等。 让我们开始! 进一步学习的下一步是从学习基础开始。 我们需要学习Swift的组成。 Swift是使用变量和常量构建的。 日常程序员用来在Swift中构建Facebook之类的一些基本数据类型是String,Float,Int,Bool,Double和Optional。 您已经准备好开始编写第一行代码。 在Swift Sandbox或Xcode Playground中,编写以下代码行。 var firstMessage:String =“你好,世界! ”让收入= 100 varggyBank:Double 让大脑年龄:整数= 80 var age = 24 //您可以在此处输入您的年龄。 存钱罐=双倍(大脑年龄/年龄*收入) let balance =“我的新收入是$ \(piggyBank)。” firstMessage + =余额 打印(firstMessage) 恭喜你! 您已经编写了前几行代码。 现在,让我们回顾一下您写的内容。 按照编程领域的惯例,您的第一条消息包含一个字符串值“ Hello,World!”。 ”。 firstMessage的末尾有一个空格,但稍后会介绍。 您隐式地将常量收入声明为整数,并将其分配为100。然后,您声明了数据类型为Double的变量piggybank。 接下来,您明确声明了一个整数常量brainAge,并为其分配了80的值,然后再声明您的年龄(或我的😈)。 现在,您为piggyBank分配了一个值。 […]

构建自定义Xcode Instruments软件包

在AppSpector,我们经常使用集成的工具(当然是我们自己的代码,包括核心部分-移动SDK)来调试客户端应用程序。 我们一直使用适用于特定平台的各种工具来加快调试速度,并使开发过程更容易且容易出错。 因此,当我们发现WWDC 2018大会410“创建自定义工具”时,我们迫不及待地想要使用新的API进行构建。 如果您只有锤子,那么一切看起来都像钉子。 值得构建自定义Instruments软件包的问题不久就出现了。 AppSpector iOS SDK的核心部分是一个消息传递模块,简而言之,它负责iOS和我们的后端之间的双向流量交换。 SDK发送大量事件,描述主机应用程序的行为和各种操作,还接收来自后端的请求。 流量足够大,需要压缩,因此我们从一开始就实现了它,现在所有消息都在SDK和后端进行了压缩/解压缩。 在某个时候,我们决定将压缩算法从LZ4更改为基于字典的zstd,并可能对我们的数据类型提供更好的压缩。 众所周知,测量任何变化的能力对于安全有效地将它们引入至关重要,因此我们决定创建一个内置机制来跟踪压缩率和性能。 当然,定制乐器是最佳选择。 潜在的工具如何提供帮助 实际上,通过简单的日志记录就可以轻松实现几乎相同的目标,但是我们想要的以及适用于Instruments的是数据采样和可视化。 想象一下,一百个消息中的单个消息遇到压缩问题,其压缩率非常低,您需要执行某些操作(例如建立蓝牙连接)才能在真实设备上触发它。 在日志中搜索此消息可能会很痛苦。 即使您使用某种服务从设备收集和保存日志消息,并且消息具有预先计算的压缩率,也不是完全可以的。 但是就像在WWDC会话上的那个家伙一样看交互式图形,能够保存收集的数据并以后比较两次运行,建立自定义选择规则以识别和聚合具有某些属性的消息-看起来很棒。 从技术上讲,Instruments是最强大的调试平台之一DTrace的前端。 它是从Sun Solaris进入OSX的,详细描述它可以占用整本书(实际上是这样:https://www.amazon.com/DTrace-Dynamic-Tracing-Solaris-FreeBSD/dp/0132091518)。 DTrace使用以D语言编写的特殊跟踪程序(称为探针)进行操作。 在Apple推出Instruments软件包之前,您可以通过编写自己的D脚本作为数据提供程序并将其包装在Instrument模板中来构建自定义乐器。 我们将使用os_signpost API向我们的仪器提供数据。 项目设置 为了方便起见,我们将构建一个示例项目来说明一个简单的Instruments软件包。 除了在示例项目中用于模拟压缩和解压缩消息大小的随机生成的事件值之外,我们的压缩配置文件工具的工作方式相同。 我们建议克隆示例项目并在阅读时参考它。 Xcode提供了一个新的目标类型,称为“ Instruments Package”,位于“ MacOS”->“ Other”部分下。 目标模板没有任何作用,只是添加了一个扩展名为.instrpkg的文件,它实际上是一个描述我们的仪器布局和功能的XML文件。 构建软件包的大部分工作只是用原始XML编写。 让我们希望我们能够尽快得到一些特定于任务的编辑器,例如InterfaceBuilder或CoreData模型编辑器。 仪器架构 我们将构建的工具将使用os_signpost调用作为数据提供者。 该API允许定义事件的开始和结束,还可以传递一些格式化的字符串以及开始和结束调用。 就像使用“ scanf()”一样,通过根据字符串的格式解析该字符串来获取在Instruments端的事件数据。 我们将在Swift中使用os_signpost(),如果您使用Objective-C编写代码,则应使用os_signpost_interval_begin / os_signpost_interval_end调用。 要开始使用这些API,我们需要实例化“ log”实例,因为os_signpost使用os_logging子系统发送消息和唯一的路标标识符: 静态let log = OSLog(子系统:“ com.package”,类别:“行为”)static let […]

构建像Lego这样的应用程序—教程11

动态尺寸 1.简介 在教程10中,我们完成了“新闻”单元格中的属性。 当我们在运行时查看单元格时,详细信息文本和图像都被截断并且没有显示其全部内容。 在本教程11中,我们将采用一些机制来允许内容增长,并使单元自动设置其大小。 2.默认像元高度 创建NewsTableViewCell布局时,我们在顶部和底部边距处都包含了约束。 这使单元可以确定显示所有内容所需的高度(即“内部内容大小”)。 如果文本或图像变大,则单元格知道它需要更高的高度。 默认情况下,表格视图将自动确定其单元格的高度以适合其内容。 👉选择“新闻”场景中的两个单元格。 一种方法是单击一个单元格,然后在单击另一个单元格的同时按住shift键。 选择大小检查器(标尺图标)。 Size在“大小”检查器中的“ Row Height标签旁边,关闭“ Custom复选框。 Row Height字段将更改为Default 。 画布中的单元格缩小到44点高。 您将不再看到内容。 👉运行应用程序。 在运行时,表格视图动态设置单元格的高度以匹配内容。 但是,在设计时,仅看到单元格高44点并不能为我们提供有用的预览。 这是一个难题。 如果我们使用自定义高度,则设计时间单元格是有用的高度,但是它们不会在运行时进行调整。 如果使用默认高度,则在设计时压缩单元格内容,但在运行时动态调整。 幸运的是,我们可以选择将单元格的高度设置为Interface Builder中看起来不错的值(即在设计时),并修改视图控制器以动态设置每个单元格的高度以适合其运行时的内容。 3.查看控制器单元的高度 如前所述,每个场景都有一个“视图控制器”,其中包含运行它的代码。 顾名思义,视图控制器在运行时控制场景内的所有视图(包括单元格的高度)。 我们需要视图控制器中的代码来动态调整像元高度。 幸运的是,这些代码已经在BFWControl框架中为我们编写了。 首先,让我们将Interface Builder中的单元格恢复为有用的预览高度。 👉切换回Xcode。 在仍选中两个单元格的情况下,在“大小”检查器中,将“ Row Height输入为220 。 我们可以输入我们喜欢的任何行高,以便合理地预览情节提要中的单元格。 我们也可以像以前一样通过拖动单元格的底部手柄来调整它们的高度。 其次,我们将告诉视图控制器在运行时设置每个单元格的高度,以匹配其内容的固有高度。 我们只需要将News视图控制器更改为AdjustingTableViewController并打开其intrinsicHeightCells属性即可。 clicking通过单击标题栏中的黄色图标来选择表视图控制器。 在右侧面板中选择“身份检查器”。 👉在Identity Inspector中的“ Class字段中,键入Adj然后从弹出菜单中选择AdjustingTableViewController 。 点击Return或Tab (在键盘上)。 Xcode应该以BFWControls自动输入Module […]