小编Dev*_*sta的帖子

比较Swift中的AnyObjects,而不将它们转换为特定类型

尝试使用Equatable协议中定义的'=='运算符比较AnyObject类型的两个对象会导致Swift中出现编译错误.有没有人找到比较这些对象的方法,而不知道可以用于向下转换的真实对象类型?

这个问题的背景是我有一个字典Dictionary <String,AnyObject>,其中值应该通过下标提供,然后在某些时候我需要比较字典中的值以确保它们是唯一的.

编辑 这是一个演示该问题的片段.

@objc(FooObject)
public class FooObject: NSManagedObject {

    @NSManaged public var properties: Dictionary<String, AnyObject>

    public subscript(property: String) -> AnyObject? {
        get {
            return properties[property]
        }
        set(newValue) {

            for propertyValue in properties.values {
                if propertyValue == newValue { // This line is not compiling: Cannot invoke '==' with AnyObject
                    println("Values in are expected to be unique!")
                    // Throw an exception here ...
                }
            }

            properties[property] = newValue
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在类定义中声明的类似<T:Equatable>的泛型并用作字典的值类型将无法解决问题,因为它不能与NSManagedObject子类一起使用.

comparison swift

30
推荐指数
3
解决办法
2万
查看次数

WatchOS单元测试

我正在为Apple Watch构建一个应用程序,并希望编写一个简单的单元测试.我环顾四周,没有找到为watchOS代码添加单元测试包的单一方法.Xcode支持iOS,macOS甚至tvOS的单元测试,但不支持watchOS.有没有人做过,如果是的话,诀窍是什么?

unit-testing swift watchkit watchos-2

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

标签 统计

swift ×2

comparison ×1

unit-testing ×1

watchkit ×1

watchos-2 ×1