解析SDK 1.7.1无法在Xcode 6.3中运行

时间:2015-04-14 06:21:23

标签: xcode swift parse-platform

我的代码在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
    }
}

}

我在代码右侧的评论中写了错误  下面。

  1. Falialbe初始化init / style:className:)'无法覆盖不可用的初始化程序
  2. 使用选择器queryForTable的ovverriding方法具有不兼容的typ() - > PFQuery
  3. 使用选择器' tableView:cellForRowAtindexPath:object:'的ovverriding方法具有不兼容的类型'(UITableView,NSIndexPath,PFObject) - > PFTableViewCell
  4. 无法找到'下标'接受提供的agruments
  5. 当我从Parse Quickstart创建一个新的Swift项目并添加一个Tableviewcontroller时,我遇到了同样的错误。在我的旧项目中是一个Objective-C桥接标题,我删除了一个,因为我有机会在我的Swift项目中直接添加Parse SDK 1.7.1。

    现在我需要帮助,因为我不知道自己要改变什么......

    PS:对于德语和英语代码的混合,我很抱歉,我会在项目再次运行后进行调整

2 个答案:

答案 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 {

希望它有所帮助。由于最新的更新解包元素通常需要针对可能的错误进行修改。