我有这个相对简单的方法来过滤tableView的数据源对象。

func filterCategoriesWithQuery(query: String) {

    placeCategoriesTableViewDataSource.filteredCategories
        = placeCategoriesTableViewDataSource.placeCategories.filter({ (category: JSON) -> Bool in

        let categoryName = (category["name"].stringValue).lowercaseString
        if categoryName.hasPrefix(query.lowercaseString)  {
            return true
        } else {
            return false
        }

    })

    genericTableView.reloadData()

在更新到Swift-1.2 / Xcode-6.3b之前,此方法运行良好,但现在在使用lowercaseString时始终崩溃。 lowercaseString方法似乎有一个错误?

使用NSZombieEnabled或在malloc_free_break处中断,我可以看到它与[CFString release]: message sent to deallocated instance一起崩溃

难道我做错了什么?这是一个错误吗?任何解决方法?

最佳答案

这是Swift 1.2的第一个测试版中的错误。
在苹果开发者论坛上,克里斯·拉特纳(Chris Lattner)提到了a similar bug with uppercaseString,该单词应在下一个Beta中修复。

在此之前,作为一种解决方法,您可以尝试在项目的构建设置中将Swift编译器优化更改为无。这帮助我解决了与Array有关的类似问题。

09-26 22:53