2016-04-19 9 views
0

こんにちは私はこの拡張子をNSUserDefaultsとしてObj-Cを使ってアクセスする必要があります。拡張でswift-ObjC内の拡張子にある静的変数にアクセス

構造体

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) 
    } 
} 

同じ拡張クラスのstatic変数

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

ので、私は

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

を使用することにより迅速なクラスで、通常はそれを呼び出すことができますが、失敗したObj-Cクラスでそれを呼び出す。それではどうすればいいですか?事前のおかげで

EDIT: は

[NSUserDefaults.testDefault get]; 

を使用しようとしましたが、私は

プロパティ 'testDefault' オブジェクトの型には見られない 'NSUserDefaults'

答えて

2

構造体を取得していますObjective-Cでは使用できません。 Objective-CでSwiftのコードを利用できるようにするには、サブクラスであるNSObjectである必要があります。 testDefaultは構造体であるため、Objective-Cでは見ることができません。

関連する問題