相关疑难解决方法(0)

AnyObject无法在Xcode8 beta6中运行?

在Xcode8 beta6中,以下代码将引发警告:'is'test始终为true.但它不会打印通过.

    struct TestStruct {
    }

    //warning: 'is' test is always true
    if TestStruct() is AnyObject {
        print("pass")
    }
Run Code Online (Sandbox Code Playgroud)

以下代码将引发警告:从'T'到'AnyObject'的条件转换始终成功

public static func register<T>(_ protocolType: T.Type, observer: T) {

    //Warning: Conditional cast from 'T' to 'AnyObject' always succeeds
    guard let object = observer as? AnyObject else {
        fatalError("expecting reference type but found value type: \(observer)")
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swift3 xcode8-beta6

24
推荐指数
2
解决办法
1781
查看次数

如何测试泛型变量是否为AnyObject类型

在Swift 3中,我无法再检查泛型变量类型是否为class(AnyObject).以下代码返回true,isObject即使特定类型T和传递的值是struct而不是class.在Swift 2.3和2.2中它按预期工作并且isObjectfalse.

struct Foo<T>
{
    var value: Any?
    var isObject: Bool = false

    init (val: T?)
    {
        if val != nil
        {
            // following line shows warnings in Swift 3
            // conditional cast from 'T?' to 'AnyObject' always succeeds
            // 'is' cast is always true
            isObject = val is AnyObject

            self.value = val
        }
    }
}

struct Bar
{
    var bar = 0
}

let b = …
Run Code Online (Sandbox Code Playgroud)

swift swift3

3
推荐指数
1
解决办法
718
查看次数

如何检查Error是否是NSError的子类

我想要一个函数,对于任何给定的函数,它Error会给我一些描述

protocol CustomError { }

func customDescription(_ error: Error) -> String {
    switch error {
    case let customError as CustomError:
        return "custom error"
    case ???:
        return "not subclass of NSError"
    case let nsError as NSError:
        return "subclass of NSError"
    }
}
Run Code Online (Sandbox Code Playgroud)

上面不是真正的代码,我不想要String描述,而是a Dictionary,但这在问题的上下文中并不重要.

问题是我不知道如何区分Errors是哪个子类,NSError哪个不是因为任何快速错误都可以桥接到NSError.有可能迅速吗?

cocoa ios swift

1
推荐指数
1
解决办法
560
查看次数

标签 统计

swift ×3

ios ×2

swift3 ×2

cocoa ×1

xcode ×1

xcode8-beta6 ×1