导致错误的 Swift 3 更新
Posted
技术标签:
【中文标题】导致错误的 Swift 3 更新【英文标题】:Swift 3 updates that cause error 【发布时间】:2016-10-14 19:35:30 【问题描述】:我更新到 swift 3.0,我得到这两个错误,请帮忙。下面有代码和图片
self.blockfinish 出现错误
var blockFinish: ((_ selectedTags: Array<Tag>, _ unSelectedTags: Array<Tag>) -> ())!
func finishTagController()
var selected: Array<Tag> = Array()
var unSelected: Array<Tag> = Array()
for currentTag in tags
if currentTag.isSelected
selected.append(currentTag)
else
unSelected.append(currentTag)
self.dismissViewControllerAnimated(true, completion: () -> Void in
self.blockFinish(selectedTags: selected, unSelectedTags: unSelected)
)
这里我在 let ("addTagView.textEdit.text.stringByTrimmingCharactersInSet(spaceSet)") 得到一个错误
func createNewTag()
let spaceSet = NSCharacterSet.whitespaces
let contentTag = addTagView.textEdit.text.stringByTrimmingCharactersInSet(spaceSet)
if strlen(contentTag) > 0
let newTag = Tag(isSelected: false, isLocked: false, textContent: contentTag)
tags.insert(newTag, atIndex: tags.count)
collectionTag.reloadData()
cancelEditTag()
Error image
【问题讨论】:
欢迎来到 ***!在我回答问题后,您编辑了问题以删除您的一个问题,并且我撤消了该更改。不要在回答问题后删除问题,因为重点是帮助其他人了解这些信息。同样对于未来,当错误消息与您所拥有的一样简单时,只需将它们键入或粘贴到实际问题中,而不是粘贴屏幕截图链接。链接可能会消失,该信息将永远消失,更不用说错误将无法搜索。 对不起,我想指出问题,我会改回来 Dina 你能帮帮我吗,对不起 你做了什么,如果你修复它或恢复页面,我很困惑。我想知道的只是修复它。你能帮我吗 我撤消了您的编辑,但保留了您添加的属性声明。检查我的更新答案以获取解决方案。 【参考方案1】:字符串修剪方法的签名在 Swift 3.0 中发生了变化。 Here is the new method:
func trimmingCharacters(in set: CharacterSet) -> String
所以而不是:
let contentTag = addTagView.textEdit.text.stringByTrimmingCharactersInSet(spaceSet)
你会这样做:
let contentTag = addTagView.textEdit.text.trimmingCharacters(in: spaceSet)
编辑:
blockFinish
在调用点不接受参数名称。
替换:
self.blockFinish(selectedTags: selected, unSelectedTags: unSelected)
与:
self.blockFinish(selected, unSelected)
【讨论】:
另一个错误呢,你能帮我解决一下,blockfinish错误 你说得对,但是块完成错误真的让我很挣扎 你能帮忙吗 您需要提供blockFinish
属性的声明。某些内容不匹配,但如果没有该信息,我们无法告诉您是什么。以上是关于导致错误的 Swift 3 更新的主要内容,如果未能解决你的问题,请参考以下文章
将代码更新为最新的 Swift 4 语法会导致“线程 1:致命错误:索引超出范围”错误
代码转换 swift 2 --> 3 导致索引路径处的二进制运算符错误