【发布时间】:2015-10-21 10:41:06
【问题描述】:
当我尝试在数组中查找重复项时,我收到错误“不能在不同大小的类型之间使用 unsafeBitCast”。我找到了以下方法的重复项。
func uniq<S : SequenceType, T : Hashable where S.Generator.Element == T>(source: S) -> [T] {
var buffer = [T]()
var added = Set<T>()
for elem in source {
if !added.contains(elem) {
buffer.append(elem)
added.insert(elem)
}
}
return buffer
}
func filter() {
var arrayForSearch = mp3Files as! [String]
var filteredArray = uniq(arrayForSearch)
println("filtered array \(filteredArray)")
}
我在此链接enter link description here 上知道的查找重复项的方法。我使用 Xcode 6 和 Swift 1.2
这段代码中有数组。
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)")
}
当我在操场上编写这段代码时,它可以工作。 一个例子
var array = ["Apple", "Mac", "iPhone", "iPad Air", "Apple", "Air", "Air"]
var filteredArray = Array(Set(array))
println(filteredArray)
如何在我的项目中使用它?
【问题讨论】: