【问题标题】:Access static variable in extension in swift-ObjC [duplicate]在swift-ObjC中访问扩展中的静态变量[重复]
【发布时间】:2016-04-19 12:11:39
【问题描述】:

您好,我有 NSUserDefaults 的扩展程序,我需要使用 Obj-C 访问它。

扩展中的结构

public struct UserDefaultsEntry {
    let key: String

    func get() -> AnyObject? {
        return NSUserDefaults.standardUserDefaults().objectForKey(key)
    }

    func set(value: AnyObject) {
        switch value {
        case is Bool:
            NSUserDefaults.standardUserDefaults().setBool(value as! Bool, forKey: key)
            break
        case is String:
            NSUserDefaults.standardUserDefaults().setObject(value as! String, forKey: key)
            break
        case is NSData:
            NSUserDefaults.standardUserDefaults().setObject(value as! NSData, forKey: key)
            break
        default:
            break
        }
    }

    func remove() {
        NSUserDefaults.standardUserDefaults().removeObjectForKey(key)
    }
}

同一扩展类中的静态变量

public static let testDefault = UserDefaultsEntry(key: "testDefault")

这样我就可以在 swift 类中正常调用它了

let string = "test"
NSUserDefaults.testDefault.set(string)

但未能在 Obj-C 类中调用它。那我怎么称呼它?提前致谢

编辑: 尝试使用

[NSUserDefaults.testDefault get];

但我得到了

在对象类型“NSUserDefaults”上找不到属性“testDefault”

【问题讨论】:

    标签: ios objective-c xcode swift


    【解决方案1】:

    结构在 Objective-C 中不可用。要使 Swift 中的代码在 Objective-C 中可用,它必须是子类 NSObject 的类。 testDefault 是一个结构,因此,Objective-C 看不到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2013-01-31
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多