gpt4 book ai didi

ios - 不能快速在不同大小的类型之间使用 unsafeBitCast

转载 作者:搜寻专家 更新时间:2023-10-30 22:16:33 26 4
gpt4 key购买 nike

当我尝试在数组中查找重复项时,我收到错误消息“不能在不同大小的类型之间执行 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)")
}

当我在 playground 中编写这段代码时,它起作用了。一个例子

var array = ["Apple", "Mac", "iPhone", "iPad Air", "Apple", "Air", "Air"]
var filteredArray = Array(Set(array))

println(filteredArray)

如何在我的项目中使用它?

最佳答案

var mp3Files: Array<String!>!

哇,好多感叹号....不需要。

var arrayForSearch = mp3Files as! [String]

以及 mp3Files 的类型永远不能与 [String] 相同,所以你不能在它们之间强制转换(如果允许的话会崩溃)。

您过于频繁地使用隐式解包选项。只有在某些特殊情况下才需要它们。只需更改 mp3Files[String] (在这种情况下,您根本不需要 as!;您也不应该经常需要 as!)。

同样,arrayFiles (你从不使用),应该是 [NSURL] , 不是 Array<NSURL!>! .

关于ios - 不能快速在不同大小的类型之间使用 unsafeBitCast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31717580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com