1. ホーム
  2. ios

[解決済み] 定義がSwift 2.0の旧値と矛盾する

2022-02-12 01:17:37

質問

Xcodeをバージョン7に、Swiftを2.0にアップデートしました。私のアプリケーションは動作し、Swift 1.2のXcode 6では何のエラーもありません。私は今、メソッドでエラー"Definition conflicts with previous value"を取得します。 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell と表示され、以前の定義である ' tableView はこちら

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if searchPredicate == nil  {
        return arrayItem.count ?? 0
    } else {
        return arrayFilterOfNames.count ?? 0
    }
}

エラーはこちら

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("artistTwo", forIndexPath: indexPath) as! SongsCellArtist

        if searchPredicate == nil  {
        var currentString = arrayItem[indexPath.row]
        var urlULTRA: NSURL!
            var ultraDirectory = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
            if var ultraURL: NSURL = ultraDirectory.first as? NSURL {
                urlULTRA = ultraURL.URLByAppendingPathComponent(currentString)
            }
            var ultraMediaPlayer = AVPlayerItem(URL: urlULTRA)
            var ultraCommonMetaData = ultraMediaPlayer.asset.commonMetadata 
            for ultraData in ultraCommonMetaData {
                if ultraData.commonKey == "title" {
//                    println("ultra data equals \(ultraData.stringValue)")
                    nameSongForPass = ultraData.stringValue
                }
                if ultraData.commonKey == "artist" {
                    nameArtistForPass = ultraData.stringValue
                }
                if ultraData.commonKey == "album" {
                    nameAlbumForPass = ultraData.stringValue
                }
                if ultraData.commonKey == "artwork" {
                    imageSongForPass = ultraData.dataValue
                }
            }

            cell.nameSong?.text = nameSongForPass
            if nameAlbumForPass != nil {
                cell.artistAlbumName?.text = "\(nameArtistForPass) - \(nameAlbumForPass)"
            } else {
                cell.artistAlbumName?.text = "\(nameArtistForPass)"
            }

            if imageSongForPass != nil {
                cell.imageSongs?.image = UIImage(data: imageSongForPass)
            } else {
                cell.imageSongs?.image = UIImage(named: "Notes100.png")
        }
        } else {
            var name: String! = arrayFilterOfNames[indexPath.row]
            cell.nameSong.text = name
        }
        return cell
    }

解決方法は?

の戻り値は tableView:cellForRowAtIndexPath はオプションとして宣言されています

... -> UITableViewCell?

編集する 実はSwiftのバージョンに依存するんです。
一方、シグネチャの cellForRowAtIndexPath が非選択的な戻り値に変更されました。