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
}
}
}
Я написал ошибки в комментарии на правой стороне кода и ниже.
- Falialbe инициализирует init/style:className:)'не может переопределить исправный инициализатор
- Метод Ovverriding с селектором queryForTable имеет несовместимый тип () -> PFQuery
- Метод Ovverriding с селектором 'tableView:cellForRowAtindexPath:object:' имеет несовместимый тип '(UITableView, NSIndexPath, PFObject) -> PFTableViewCell
- Не удалось найти перегрузку для "нижнего индекса", который принимает предоставленные агрументы
У меня такие же ошибки, когда я делаю новый проект 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 {
Надеюсь, это полезно. Поскольку последнее обновление элементов развертывания обычно необходимо пересмотреть на предмет возможных ошибок.