导致错误的 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 导致索引路径处的二进制运算符错误

更新到 swift 3 后出现很多错误

在 Swift 3 中使用带有动态 URL 的 AVAudioPlayer 导致线程错误

将 URLSession 更新为 swift 3 抛出错误

Swift 3 更新中的错误 - 在展开可选值时意外发现 nil