UITableViewCell显示文档文件夹中的错误结果 [英] UITableViewCell shows incorrect results from document folder

查看:89
本文介绍了UITableViewCell显示文档文件夹中的错误结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 UITableViewController ,其中包含文档文件夹中的文件。我按艺术家名称命名单元格。我有三个艺术家和四首歌。 UITableViewCell 显示具有相同艺术家的两个单元格。我该如何解决?

I have UITableViewController with files from document folder. I name the cells by artist name. I have three artist and four songs. UITableViewCell shows two cells with the same artist. How can I fix it?


此代码从文档文件夹导出数据

This code export data from document folder

var mp3Files: Array<String!>!
func exportData() {
    var generalURL: [AnyObject]?
    var arrayFiles: Array<NSURL!>!
    var directory = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
    var urlFromDirectory = directory.first as! NSURL

    var file = fileManager.contentsOfDirectoryAtURL(urlFromDirectory, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles, error: nil)!
    println("file \(file)")

    mp3Files = file.map(){ $0.lastPathComponent }.filter(){ $0.pathExtension == "mp3" }

  println("mp3 files  \(mp3Files)")
}

并且代码填写 UITableViewCell

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

      var dataForCell = mp3Files[indexPath.row]
    var generalURL: NSURL!

    var documentFolder = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)

    if var urlFromFolder: NSURL = documentFolder.first as? NSURL {
        generalURL = urlFromFolder.URLByAppendingPathComponent(dataForCell)
        println("general \(generalURL)")
    }

    var player = AVPlayerItem(URL: generalURL)
    var metaData = player.asset.commonMetadata as! [AVMetadataItem]
    for item in metaData {
        if item.commonKey == "artist" {
            nameArtist = item.stringValue
        }
    }

        cell.textLabel?.text = nameArtist
    //
     cellStrings = cell.textLabel?.text
    println("cell strings \(cellStrings)")
    // Configure the cell...

    return cell
}


推荐答案

 var superArray = [String]()
var filterArray = [String]()
func filter() {
    var proString: String!
    for proItem in mp3Files {
        var proFolder = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
        var americaURL: NSURL!
        if var proURL: NSURL = proFolder.first as? NSURL {
            americaURL = proURL.URLByAppendingPathComponent(proItem)
        }
        var proPlayerItem = AVPlayerItem(URL: americaURL)
        var proData = proPlayerItem.asset.commonMetadata as! [AVMetadataItem]
        for proFiles in proData {
            if proFiles.commonKey == "artist" {
                superArray.append(proFiles.stringValue)
            }
        }
    }
    filterArray = Array(Set(superArray))
    filterArray.sort(){ $0 < $1 }
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1 ?? 0
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return filterArray.count ?? 0
}

var name: String!
var nameArtist: String!


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

    nameArtist = filterArray[indexPath.row]

    cell.textLabel?.text = nameArtist

    return cell
}

这篇关于UITableViewCell显示文档文件夹中的错误结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆