LoginSignup
1
2

More than 5 years have passed since last update.

[Swift]バイナリデータを解凍する際にNSKeyedUnarchiverが実行可能か判定したい

Last updated at Posted at 2017-05-19

NSKeyedUnarchiverしたいときに実行時に落ちてしまい躓いたので自分用に備忘録に残しておく

躓いたケース

NSKeyedArchiverを未実行NSData型のデータに対してNSKeyedUnarchiverを実行すると落ちた。

対処法

圧縮済み・未圧縮の判定をオプショナルバインディングを使って行う。

理由

下記コードは落ちる問題を解決した例

Swift2_3ver.swift
func excuteHogeWithData(NSData: Data) 
{
    if let extractedData = NSKeyedUnarchiver.unarchiveObjectWithData(data)
    {
        // 引数に対してNSKeyedArchiver実行済みの場合
    }
    else
    {              
        // 引数に対してNSKeyedArchiver未実行の場合
    }
}
Swift3_ver.swift
func excuteHogeWithData(data: Data) 
{
    if let extractedData = NSKeyedUnarchiver.unarchiveObject(with: data) 
    {
        // 引数が NSKeyedArchiver で圧縮されたのデータの場合
    } 
    else 
    {
        // 引数が NSKeyedArchiver で圧縮されたデータでない場合
    }
}

追記 2017/5/24

・Swift2.3で開発をしていたため、Swift3系の実装法が未記載でした。
・このケースではオプショナルバインディングが使えることを考慮していなかったため記事を修正しました。

1
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2