- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个复杂的函数,尝试将任意传入参数转换为已知类型。我收到这个错误。
Could not cast value of type 'Swift.Int' (0x100a73aa8) to 'Swift.Int' (0x1002b7fb8).
以下是该函数的粗略概述:
public func convert <A, T>(a:A, _ t:T.Type) -> T? {
print(t) // Int
print(T.self) // Int
print(T.self == Int.self) // False. But why?
...
// Well I got a little hacky since the rest of the checks failed...
if "\(T.self)" == "Int" {
let ret = Int(a as! NSNumber)
print(ret) // 6, reports as an Int
return ret as! T
}
我正在传递一个 NSNumber。当代码位于同一个项目中时它可以工作。
值得注意的是,类型是从应用程序代码传入的,并且是在框架代码中。当我在本地运行它时,它工作没有问题。框架代码是否引用了与应用程序代码不同的内存类型?
还值得一提的是:这是一个以 iOS 和 OSX 为目标的项目。我仅在运行 OSX 目标时看到以下错误。
objc[24993]:类 _TtC6AppKit15REPLApplication 在/Users/Damouse/Library/Developer/Xcode/DerivedData/FabAgainstBackend-ajqzosbfxnphgjaabtlaawsjsywj/Build/Products/Debug/Riffle.framework/Versions/A/Frameworks/libswiftAppKit.dylib 和/Users 中实现/Damouse/Library/Developer/Xcode/DerivedData/FabAgainstBackend-ajqzosbfxnphgjaabtlaawsjsywj/Build/Products/Debug/FabAgainstBackend。将使用两者之一。哪一个是未定义的。
最佳答案
想通了。这是一个带有 Cocoapod 的 OSX 应用程序,其中包含 Swift 代码。为了让应用程序编译,我必须将“包含嵌入的 swift 代码”设置为"is"。
这可以让代码编译,但给我“哪个是未定义的”。错误。我相信 swift 库被链接两次,因此框架代码中引用的类型与从应用程序代码传入的类型不同。 “解决方案”:
if "\(T.self)" == "Int" {
let ret = Int(a as! NSNumber)
return unsafeBitCast(ret, T.self)
}
...这几乎只是管道胶带。它确实有效,但它让我内心的小猫感到悲伤。
关于ios - 从 Swift.Int 作为泛型转换为 Swift.Int 令人惊讶地失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005991/
我是一名优秀的程序员,十分优秀!