ios - 在 swift-ObjC 中访问扩展中的静态变量

标签 ios objective-c xcode swift

<分区>

您好,我有 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];

但是我得到了

Property 'testDefault' not found on object type 'NSUserDefaults'

最佳答案

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

关于ios - 在 swift-ObjC 中访问扩展中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718008/

相关文章:

ios - 在每个 UITableViewCell 中显示备用 View - iOS

ios - dispatch_get_main_queue 在 iOS 8 中弃用

xcode - NSNumber 可能存在内存泄漏

ios - iCloud:NSUbiquitousKeyValueStore 问题

iphone - 多个 Xcode,如何选择打开哪个 xcodeproj 文件

objective-c - UIWebView 向下滚动输入焦点仅限 iOS 6

ios - 无法将类型 '(User) -> Dictionary<String, String>' 的值转换为预期的参数类型 'Dictionary<String, String>'

Objective-c 共享图像和文本

objective-c - AVAssetWriter 有时会失败,状态为 AVAssetWriterStatusFailed。似乎是随机的

iphone - 从另一个类更改 UILabel 的文本