嗨我有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'没有找到对象类型' NSUserDefaults'
答案 0 :(得分:2)
Objective-C中没有结构。要使Swift中的代码在Objective-C中可用,它必须是子类NSObject
的类。 testDefault
是一个结构,因此,Objective-C无法看到它。