2017-04-07 10 views
0

私はかなり速くて新しく、迅速にプログラミングしながら "データ"を見つけました。 iOSでUserDefaultsを使用している間、私はそれを見つけました。私はAppleが提供したドキュメントを読んだが、あまり理解できなかった。SwiftのNSDataまたはデータとは何ですか?

誰でも私にそれを説明できますか?

static var _currentUser: User? 

    class var currentUser: User? { 
     get { 
      if _currentUser == nil { 
       let defaults = UserDefaults.standard 
       let savedUser = defaults.object(forKey: "savedUser") as? Data 
       if let savedUser = savedUser { 
        let dict = try! JSONSerialization.jsonObject(with: savedUser as Data, options: []) 
        _currentUser = User(currentUserInfo: dict as! NSDictionary) 
       } 
      } 
      return _currentUser 
     } 
     set(user){ 
      _currentUser = user 
      let defaults = UserDefaults.standard 
      if let user = user { 
       let data = try! JSONSerialization.data(withJSONObject: (user.userInfo)!, options: []) 
       defaults.set(data, forKey: "savedUser") 
       print("current user saved") 
      } 
      else { 
       defaults.removeObject(forKey: "savedUser") 
      } 
      defaults.synchronize() 
     } 
    } 
+0

アップルがSwift 3から「NS」プレフィックスを削除しました。したがって、NSDataが 'Data'になりました。スイフト2歳以上では、どこでもNSです。例えば: 'NSUserDefault'、' NSJSONSerialization'、 'NSURL'、... –

+0

ありがとう、私はその部分@DanhHuynhを持っていますが、実際にはどんな種類のオブジェクトですか? – NoMan

+0

@kennytmが実際のコードを掲載しました。 – NoMan

答えて

6

データとNSDataは、生のバイナリデータと対話するために使用される型です。それらは、通常、生のデータを単一の文字列、整数、boolなどよりも複雑に保つために使用されます。たとえば画像。なぜ生の?

たとえば、iOSでは、Core DataやRealmなどのデータ永続化フレームワークで広く使用されています。データがなければ、データ永続化フレームワークはほとんどのユースケースを満たすために数百種類の追加タイプを必要とします。これはプログラムのシスティンタスクであり、さらに悪化してフレームワークのbloatwareを作成します。データでは、フレームワークはその型を永続させるだけで、開発者はそれをエンコードしてデコードすることになり、すべての可能なユースケースが可能になります。

1

NSプレフィックスはNeXTSTEP遺産のものです。 NeXTは、Appleによって解雇された後にSteve Jobsが結成したコンピュータ会社でした。

は、Appleが Apple's documentationからスウィフト3.

のリリースでNSの接頭辞を削除:

たNSDataとその変更可能なサブクラスNSMutableデータバイトのバッファのデータオブジェクト、オブジェクト指向のラッパーを提供します。データオブジェクトは、単純に割り当てられたバッファ(つまり、ポインタが埋め込まれていないデータ)に、Foundationオブジェクトの動作を引き継ぎます。

NSDataは静的データオブジェクトを作成し、NSMutable Dataは動的データオブジェクトを作成します。 NSDataおよびNSMutableデータは、通常、データストレージに使用され、データオブジェクトに含まれるデータをアプリケーション間でコピーまたは移動できるDistributed Objectsアプリケーションでも役立ちます。

関連する問題