我的代码在Xcode 6.2中运行良好。在更新到Xcode 6.3后,我遇到了一些Nullabilty错误。
我下载Parse SDK 1.7.1后可以解决这些错误。所以我删除了项目中的旧Parse框架文件并将新文件粘贴到其中。另外,我将我的代码转换为最新的swift语法"编辑/转换/最新的swift语法"。现在我没有Nullabilty Errors的问题,但还有其他几个问题。 在我的项目中,我有一个简单的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
}
}
}
我在代码右侧的评论中写了错误 下面。
当我从Parse Quickstart创建一个新的Swift项目并添加一个Tableviewcontroller时,我遇到了同样的错误。在我的旧项目中是一个Objective-C桥接标题,我删除了一个,因为我有机会在我的Swift项目中直接添加Parse SDK 1.7.1。
现在我需要帮助,因为我不知道自己要改变什么......
PS:对于德语和英语代码的混合,我很抱歉,我会在项目再次运行后进行调整
答案 0 :(得分:1)
我遇到的问题与我刚刚将Xcode更新到大约20分钟前的6.3相同。
对于第二个错误,请删除“!”在'PFQuery'之后。所以它现在应该看起来像......
override func queryForTable() -> PFQuery {
这解决了我在该特定错误方面的问题。
我从未像您在第一次出错时那样使用过init方法,但尝试删除它并看看你得到了什么。我的PFQueryTableViewController在没有它的情况下工作正常。
答案 1 :(得分:1)
有同样的问题。
要解决第一个初始化问题,请删除'!'在'覆盖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)
}
对'PFQuery'
之后的第二个错误执行相同的操作override func queryForTable() -> PFQuery {
希望它有所帮助。由于最新的更新解包元素通常需要针对可能的错误进行修改。