Parse SDK 1.7.1 не работает в Xcode 6.3

Мой код работал нормально в Xcode 6.2. После обновления до Xcode 6.3 у меня были некоторые ошибки Nullabilty.

Я мог решить эти ошибки после того, как я скачал Parse SDK 1.7.1. Поэтому я удалил старые файлы инфраструктуры Parse в своем проекте и вставил новые в него. Дополнительно я конвертирую свой код в последний синтаксис swift "Редактировать / конвертировать / последний синтаксис swift". Теперь у меня нет проблем с ошибками Nullabilty, но есть несколько других. В моем проекте у меня есть простой Tableviewcontroller со следующим кодом:

import UIKit

class HaendlerTableViewController: PFQueryTableViewController {
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {  //1. Falialbe initialize init/style:className:)' cannot override a non-failable initializer
    super.init(style: style, className: className)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Haendler"
    self.textKey = "name"
    self.pullToRefreshEnabled = true
    self.paginationEnabled = false
}

// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {  //2. Ovverriding method with selector queryForTable has incompatitble typ () -> PFQuery
    var query = PFQuery(className: "Haendler")
    query.orderByAscending("name")
    return query
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell { //3. Ovverriding method with selector 'tableView:cellForRowAtindexPath:object:' has incompatible type '(UITableView, NSIndexPath, PFObject) -> PFTableViewCell

    var cell = tableView.dequeueReusableCellWithIdentifier("HaendlerCell") as! HaendlerCell!
    if cell == nil {
        cell = HaendlerCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
    }

    // Extract values from the PFObject to display in the table cell
    cell.haendlerName.text = object["name"] as! String!

    var thumbnail = object["logo"] as! PFFile
    var initialThumbnail = UIImage(named: "haendler")
    cell.haendlerBild.image = initialThumbnail
    cell.haendlerBild.file = thumbnail
    cell.haendlerBild.loadInBackground()

    return cell
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


    var detailScene = segue.destinationViewController as! HaendlerDetailViewController

    // Pass the selected object to the destination view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        let row = Int(indexPath.row)
        detailScene.currentObject = objects[row] as? PFObject //4. Could not find an overload for 'subscript' that accepts the supplied agruments
    }
}

}

Я написал ошибки в комментарии на правой стороне кода и ниже.

  1. Falialbe инициализирует init/style:className:)'не может переопределить исправный инициализатор
  2. Метод Ovverriding с селектором queryForTable имеет несовместимый тип () -> PFQuery
  3. Метод Ovverriding с селектором 'tableView:cellForRowAtindexPath:object:' имеет несовместимый тип '(UITableView, NSIndexPath, PFObject) -> PFTableViewCell
  4. Не удалось найти перегрузку для "нижнего индекса", который принимает предоставленные агрументы

У меня такие же ошибки, когда я делаю новый проект Swift из Parse Quickstart и добавляю один Tableviewcontroller. В моем старом проекте был заголовок моста C-объекта, который я удалил, потому что у меня была возможность добавить Parse SDK 1.7.1 непосредственно в мой проект Swift.

Теперь мне нужна помощь, потому что я не вижу, что я должен изменить..

PS: извините за смешанный код на немецком и английском, я настрою его, как только проект снова запустится

2 ответа

У меня была такая же проблема, как я только что обновил Xcode до 6.3 около 20 минут назад.

Для вашей второй ошибки удалите '!' после 'PFQuery'. Так оно и должно выглядеть сейчас..override func queryForTable() -> PFQuery {

Это решило мою проблему в отношении этой конкретной ошибки.

Я никогда не использовал метод init, как вы сделали в своей первой ошибке, но попробуйте удалить его и посмотреть, что вы получите. Мой PFQueryTableViewController прекрасно работает без него.

Были те же проблемы.

Чтобы решить первую проблему инициализации, удалите "!" после 'переопределить init'. Должно выглядеть так:

// Initialise the PFQueryTable tableview
override init(style: UITableViewStyle, className: String!) {  //1. Falialbe initialize init/style:className:)' cannot override a non-failable initializer
    super.init(style: style, className: className)
}

Сделайте то же самое для 2-й ошибки после 'PFQuery'

override func queryForTable() -> PFQuery {

Надеюсь, это полезно. Поскольку последнее обновление элементов развертывания обычно необходимо пересмотреть на предмет возможных ошибок.

Другие вопросы по тегам