Swift 1.2与.lowercaseString崩溃

时间:2015-02-19 12:40:14

标签: ios xcode6 swift

我有这个相对简单的方法来过滤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

崩溃

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

1 个答案:

答案 0 :(得分:1)

这是Swift 1.2第一个测试版中的一个错误。 在Apple开发者论坛上,Chris Lattner提到a similar bug with uppercaseString应该在下一个测试版中修复。

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