我将Xcode更新为版本7和Swift 2.0。我的应用程序可以正常工作,在Swift 1.2的Xcode 6中没有任何错误。现在,我在方法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
}
6条答案
按热度按时间o4hqfura1#
这肯定是“{}”的问题。请检查您是否正确关闭了花括号。
mv1qrgav2#
tableView:cellForRowAtIndexPath
的返回值声明为可选**编辑:**实际上,这取决于Swift版本。
同时,
cellForRowAtIndexPath
的签名已更改为非可选的返回类型。w9apscun3#
请检查tableview
delegate functions are outside of Viewdidload
,并检查是否正确设置了表委托和数据源。对我来说,我在Swift 2.2中使用了viewdidload中的函数,将其取出并重新构建
ki0zmccv4#
因为它在签名中使用了两次相同的参数名。
iezvtpos5#
将声明更改为:
或更改属性名称。
8ehkhllq6#
我得到同样的错误,因为我做了这样的事情:
这是因为我的两个参数都是
param1
!我实际上想写param
和param2
。我可是吃了大苦头才知道的!