Tag: swift

如何将TextField添加到AlertView

版本 :XCode 8,Swift 3 您可以将TexFiled UI添加到IOS的AlertView中。 这篇文章将向您展示如何用几行代码来做到这一点。 这是我们要构建的: 创建警报和文本字段 添加文本字段以使用“完成处理程序”进行警报。 如果您对完成处理程序不熟悉,请在此处阅读 为Alertview创建动作 当前Alertview

有趣的事情-6月6日

Swift 3.0的新功能 即将对Swift 3进行的更改,除其他外,还包括简洁方法的命名和在总是感觉有些奇怪的方法中整理出第一个参数命名约定。 就像对C样式方法/结构的更新,例如CGContext *。 来自CocoaLove会议的Jaimee Newberry的精彩演讲,“消除借口”,以及促使我写更多东西的原因。 这次会议上的其他演讲/演讲者都很棒,我将在此提要中进一步介绍。 在Swift中控制复杂性 我已经排队等待一段时间,这是Andy的有见地的演讲,对我来说,除了我在DDD和最近在其他Swift相关的博客中所读到的内容之外,我对价值类型的有用性有了更多的了解。 我肯定可以利用更多的东西,并进行一次演讲以重新观看几次并制作原型。 Swift绘图示例以及与UITouch的比较非常有用。 在演讲的后半部分,安迪将所有内容与您应用程序中各层的讨论结合在一起,在我最近的一个项目中,加里·伯恩哈特(Gary Bernhardt)的“销毁所有软件”方法(在演讲中提到)隔离了您的应用,这与我产生了非常密切的共鸣。 Rails本身提供的Rails应用。 我发现它在很多方面都非常有效(代码隔离,测试,重用,可延展性等)。 很棒的演讲后问答,以及非常聪明的人群! Swift中的结构语义学/ Swift中的撤消历史记录 有关Swift和值类型的更多信息-Chris Eidhof撰写的一些很棒的文章,涵盖了值类型复制与引用语义,以及在最近动态讨论过的Dynamic Swift讨论之后的撤消管理器示例。 作为一名动态语言爱好者,我也对Swifts的动态未来也很感兴趣,最终我觉得我们目前正处于Swift / Objective-C的过渡阶段,Swift团队正在朝着这个愿景努力,我相信将成为我们希望的一切。 Swift中的表视图控制器,和Chris Eidhof Chris Eidhof的更多奇妙之处,涵盖了Swift中的表视图控制器,以及一些有趣的方法来提取控制器的配置和可重用性。 结构和值类型的另一个很好的演示实际上是作为表视图控制器中的数据,以及作为初始化程序的配置结构。 5/30/16一周的比特币新闻 有关比特币和区块链的最新消息-阅读和看到数字货币的采用以及在金融行业中使用它们的兴奋性非常有趣。

在Swift中实现键入文字效果

过去,在进行配音之前,视频游戏中的文字会在屏幕上键入。 通过逐段显示单词来模拟说单词所花费的时间,从而对文本产生了语音影响。 如今,效果仍在使用。 例如,Cleverbot是一种出于相同原因在文本上使用文字的AI,可以在没有语音时模拟语音。 该效果很容易实现,尽管要花点时间才能理解。 让我们一起完成所有步骤,让我们的程序说话! 计时器和ScheduledTimer 计时器是一种Swift工具,可让开发人员以一定的时间间隔遍历项目。 有多种使用Timer的方法,但现在让我们集中讨论ScheduledTimer函数。 Timer.scheduledTimer(withTimeInterval:TimeInterval,重复:Bool,块:(Timer)-> Void)) 计划计时器的三个参数是1)withTimeInterval,它确定计时器首次触发之前需要等待多长时间,以及每次计时器触发之间有多少时间,2)重复,以确定计时器是否触发一次以上,和3)块,这是一个闭包,它确定计时器触发时要确切执行的操作。 您应该注意,这种关闭也使我们可以访问该块中的计时器本身。 稍后将很重要。 现在,我们将使用带有以下参数的计时器: Timer.scheduledTimer(withTimeInterval:0.1,重复:true){(timer)in } 如果愿意,您可以从中创建一个变量,以访问其他作用域中的计时器。 但是我们现在没有用了,所以就别管它了。 现在我们有了一个计时器,它将每0.1秒触发一次。 有了一点技术知识,我们就继续前进。 获取字符串和字符 首先,让我们创建一个字符串,一个字符一个字符地将要输入的消息。 let message =“跟我来,看看预言中的事情…” 预言。 但是字符串只会带我们走那么远。 我们需要能够逐个字符地访问字符串。 大概有上千种方法可以做到,其中一半可能比我将要使用的方法效率更高,但是我们只需要将它们放入数组即可,所以…… 扩展字符串{ var characterArray:[Character] { var characterArray = [Character]() 用于self.characters中的字符{ characterArray.append(字符) } 返回characterArray } } 有了我们所有的工具,让我们开始吧。 写出代码块 让我们将计时器放入函数中。 对于这种情况,让我们将其作为UITextView的扩展。 我们要做的是 为字符数组和将要增加的当前索引创建值。 它将从0开始,并且每次迭代都会增加 创建我们上面所做的计时器 将characterArray [characterIndex]中的字符追加到UILabel的文本上 将characterIndex向上一级递增,以使添加到下一个迭代的字符将是数组中的下一个字符 […]

走另一条路的6个步骤

尽管Bob叔叔警告The Dark Path时过多批评强类型编译器,但我认为还有很多需要考虑的问题。 除了使用使我们感到安全和免受空值引发的异常影响的编程语言外,您还可以采用很多其他途径,这些途径并不那么黑暗。 自动化测试 林亭 编码标准 代码评论 持续学习 建筑组织 自动化测试 正如Bob叔叔指出的那样,自动化测试非常重要。 它通常被视为与动态语言之间的平衡,动态语言在编译器中对强类型语言没有很好的保护。 JavaScript,Ruby和Python都从测试中受益匪浅,这些测​​试可确保代​​码正常工作,并且尽早发现并及时发现问题。 我认为我们都可以同意,可以全部自动化的单元测试,功能测试,UI测试和集成测试可以照亮黑暗的道路。 林亭 静态分析会在编译代码时生成警告和错误,涵盖了硬性要求和一些有力的建议。 但是编译器适用于计算机。 短毛绒为人们工作。 使用SwiftLint,可以识别代码的多种改进方式,并为项目的维护方式设定标准。 您可以从一开始就使用最少数量的棉绒规则开始,然后逐渐启用更多规则。 它确实可以帮助使代码库的外观和感觉更好,并且允许linter告诉您在提交更改之前可以进行哪些改进,从而可以减少代码审查中的反馈。 它还设置了编码标准,这是下一步。 编码标准 大多数编码标准都很轻巧,这很好。 最好使其简短而甜美。 如果不能轻易记住这些标准,就不会那么严格地遵循它们。 这些标准也应被视为准则,而不是硬性要求集,这些要求实际上可能会随着团队和所使用技术的变化而随着时间而改变。 新的思想和技术一直在涌现,而当前的编码标准可能会包含这些思想和技术。 代码评论 随时间推移设置编码标准的一种方法是使用代码审查。 当您的团队发现编码模式来鼓励或劝阻时,现在是开始就这些发现进行一对一对话的好时机。 随着对代码审查的反馈变得有些重复,可以将这些技巧写下来,以一种不太短暂的方式与团队分享。 代码审查的目的应该是一起学习并分享有助于提高代码质量的技巧。 代码审查不应该是变更需求的清单,因为它将迅速将过程转变为开发周期中不受欢迎的步骤,从而在团队中引起不满。 没有人想要。 而是将其视为分享技巧并更好地了解其他人如何进行软件开发的机会。 对于审稿人来说,这是一个学习和提倡更改的绝佳机会,一旦更改代码,更改可能会影响他们的工作。 持续学习 在常规代码审查期间,会发现许多有关代码更改的发现,以及有关团队中每个人的强项,弱项以及兴趣和激情的发现。 除了在编码标准中添加更多内容外,撰写内部博客文章甚至与团队建设相关的公共博客文章也很有帮助。 写下并分享您所学的内容是巩固这些课程的好方法。 有时不妨将这些课程中的一些内容介绍给整个团队,也许要点午餐,以供不时的午餐和学习 。 当发现兴趣和激情时,鼓励博客文章和演示文稿加倍努力学习并为团队造福的好提示。 建筑组织 最后,只需将所有工作分解成多个部分,以便团队的不同成员可以拥有不同的模块,这些模块就可以整体上取得很多进展。 首先,设计和计划一个定义明确,目的有限的模块要容易得多,可以对其进行构建和测试以表明其按预期工作。 其次,随着新成员加入团队,让他们一次在一个模块上加速工作并让他们在较短的时间内拥有它的所有权变得容易得多,这样他们就可以掌握它并尽快开始进行有用的更新。 第三,它使团队有机会按时处理不同的模块,以更多地了解项目的其余部分,并在此过程中了解他们的新知识。

Swift 3.0:懒惰存储的属性,变量观察器,KVO(💤)

很快,概述一下Swift中需要了解和掌握的三个重要概念🔥许多人可能听说过惰性变量和键值观察,但是这些甚至意味着什么? 🤔我什么时候应该使用它们? 我应该注意什么后果或危险信号吗? 🛑 路线图🚗 路线图太棒了! 我认为不仅听力理论而且使用示例都具有重大价值💡对于每个主题,我都尝试包括一个基本示例和一个实际的制作示例💎 A.惰性变量 1. 什么 是一个惰性变量 2. 为什么 他们很重要 3. 如何 实施 4. 特别 笔记 5. 基本理论示例: 人员结构 uc 6. 实际生产示例: 化身 🤠 B.可变观察者🕵️ 1. 什么是变量观察者 2.关于计算属性的快速聊天🖥 3. 为什么重要 4. 如何实施 5. 特别说明 6. 基本理论示例:userStatusText🎮 7.实际制作示例: 游戏得分 👾 C.关键价值观察者(KVO)🔑 1. 什么是关键价值观察者 2. 为什么这很酷😎 3. 如何实施 4. 特别说明 5.实际的生产示例: 网页下载进度 👨‍💻 […]

iOS 10.3备用图标:您可以做什么以及如何工作?

在iOS 10.3的第一个Beta中,Apple引入了应用程序更改其图标的功能。 您可以问它什么时候有用。 实际上,我看到了不同的情况: 在游戏中,当您想要显示重大成就时。 随着元应用程序。 例如:您申请大学。 当用户登录其大学时:您更改应用程序图标。 当用户购买“应用程序包中的高级版”时,您可能希望从图标中删除“免费”标签。 要增加一些季节性(又名带有圣诞帽的应用程序图标 )。 与往常一样,Apple确保了这一过程。 确实,设想您可以将图标更改为另一个应用程序的图标…因此,您只能使用应用程序捆绑包中包含的有限图标集。 Apple将在App Store审查过程中检查这组图标。 一旦您的应用程序获得批准,您将只能使用那些经过验证的图标之一。 此外,您无法更改用户不知道的图标。 确实,当您更改图标时,会出现警报,提示You have changed the icon for “Application Name” 。 这是此功能的一些实际演示:

征服ReactiveSwift:属性(第5部分)

欢迎来到征服ReactiveSwift系列文章的第5部分。 在上一篇文章中,我们学习了如何创建,启动和观察SignalProducer 。 在本文中,我们将讨论Property和MutableProperty的概念。 定义 属性 Property是一个可观察的容器,只要更改其值,它就会发出其值。 它符合PropertyProtocol , PropertyProtocol本身具有以下属性: value :代表当前值 producer :一个SignalProducer,它发送当前值以及随后的更改。 当属性取消初始化或没有进一步更改时,此操作完成。 signal :一个信号,它发送随后的更改, 而不是当前值。 当属性取消初始化或没有进一步更改时,此操作完成。 有什么用? 当我们只需要处理值而不是错误时,这是​​非常有用的。 让我们考虑上一篇文章中的示例。 每隔五秒打印一次时间信息,间隔五十秒。 为此,我们创建了一个SignalProducer,如下所示: 请注意,这里的错误类型为NoError ,这意味着我们不在这里处理错误。 当我们可以将其包装在Property中时,这是一个很好的用例。 因此,让我们定义一个Property 。 在这里,属性的初始值为’0’,随后的值由signalProducer返回。 如前所述,Property具有signal和producer属性,两者都可以观察到,但主要区别在于信号不会发出当前值,只有随后对该值进行更改。 观察属性信号 在此示例中,我们创建了一个属性,该属性从SignalProducer中获取值。 我们还可以创建一个属性,该属性也可以从Signal中获取值。 可变属性 MutableProperty是一个可观察的容器,它像Property一样在更改时发出值,但是也可以直接对其进行突变。 与Property类似,它也符合PropertyProtocol 。 MutableProperty可以使用如下初始值进行初始化: 然后,我们可以如下更新其当前值: 就像Property一样,可以观察MutableProperty的signal和producer 。 当执行Bindings时, MutableProperty很有用。 然后MutableProperty允许我们编写如下代码: 在这里,这意味着mutableProperty的value由mutableProperty决定。 我们将在后续文章中讨论有关绑定的更多信息。 结论 希望本文能使您对Property和MutableProperty有所了解。 您可以在此处找到示例代码。 在下一篇文章中,我们将介绍Action ,它使您可以更好地控制和执行Signal的行为。

Buglife演示视频

大多数演示视频都很烂。 在Buglife,我们喜欢让事情变得不那么糟。 因此,我们制作了一个非常规的演示视频。 认识花车💩 Floater💩是一小组iOS类+扩展,它们(a)呈现在按钮轻击之间移动的浮动指尖(b)利用Xcode UI Testing自动执行轻击事件。 去GitHub上检查一下。 制作很棒的视频。 赢得。

Swift 4中的属性观察器didSet和willSet

在本文中,我们将研究快速的属性观察器。 根据Apple的文档: 财产观察员观察并响应财产价值的变化。 每次设置属性值时都会调用属性观察器,即使新值与属性的当前值相同也是如此 。 让我们看一下下面的代码片段,以帮助我们更好地了解属性观察者willSet和didSet的工作方式。 从上面的屏幕截图可以看出,在设置person属性之前,将首先调用willSet中的代码。 在设置person属性后, didSet将立即被调用。 这就是为什么我们可以访问didSet中的person属性, 而这在willSet中是不可能的。 同样从代码中,您可以看到我在willSet观察器中使用了自定义参数名称。 您可以随意使用自己的自定义参数名称覆盖默认参数名称。 关于属性观察器的另一件事要注意的是:不能在惰性变量上使用属性观察器,因为只有在程序中调用了惰性变量后 , 惰性变量才能正确初始化并分配给内存。 示例如下所示: 惰性变量名称=“约翰” print(“我的名字是\(名字)”) 仅在上面的print语句中调用了变量名后,该变量名才会得到正确的初始化和分配的内存。 这违反了属性观察者的目的,因为具有观察者的属性需要具有初始值 。 每当属性值更改时,这将使它能够跟踪更改。 当您必须跟踪属性以确定值何时更改以执行某些逻辑时,就需要属性观察器 。 因此,您可以将其抽象为willSet和,而不是使用某些函数来检查属性的值以执行某些操作。 当值设置为所需值时,让它执行逻辑。 相信阅读完本文后,您现在对Swift中的属性观察器如何工作有了更好的了解。 感谢您的阅读,并随时在下面提出任何意见或问题,我将为他们解答。

Swift和Xcode 9中的iOS版Salesforce SDK入门

我遇到了一个名为“ 本机iOS-使用Salesforce Mobile SDK开发本机iOS应用程序 ”的模块,我对此很感兴趣,因此决定启动它。 我很早就遇到了问题,并且我没有看到太多有关Xcode 9和Swift的文档,所以我决定在这里写我的经验,因为它可能对某些人有用。 第一步,我由Salesforce下载了移动SDK文档,因为它包含了您一路需要的有价值的信息。 提醒一下,所有Mobile SDK开发都需要以下软件。 Node.js Npm 3.10或更高版本(与Node.js一起安装)。 具有连接的应用程序的Salesforce Developer Edition组织。 使用Mobile SDK 6.0进行iOS开发还需要以下软件:iOS 10或更高版本,Xcode 9或更高版本。 (我们建议使用最新版本。),CocoaPods 1.2版或更高版本(cocoapods.org)和forceios 6.0版。 剧透警报 -本文将帮助您度过Trailhead上的第一个挑战,请不要使用它来作弊并尝试首先自己解决。 步骤1 —在Salesforce中获取已连接的应用程序的回调URL和使用者密钥 此步骤假设您正在使用Salesforce Lightning Experience,并且已经创建了一个已连接的应用程序-如果您需要有关如何创建应用程序的帮助,请检查此Salesforce Trailhead模块。 在您的Trailhead Playground或Developer Edition组织中,转到“设置”。 如果您使用的是Lightning Experience,请选择“ 应用程序” |“ 应用程序” 。 应用程序管理器 ,在我的案例“ Trailhead Native iOS”中本地化您的应用程序,然后单击箭头和“ 视图” 。 将您的使用者密钥和回调URL复制并粘贴到文本文件中,以后将需要它们。 第2步-为Xcode创建iOS本机Swift模板 首先,我遇到了我的Git版本的麻烦,不得不再次安装它。 否则,这很简单。 在终端窗口中,使用forceios创建。 $ forceios创建 […]