2017-07-28 1 views
0

ビデオメタデータにいくつかの情報を保存します。今、私はテキストを保存することができます、それはStringオブジェクトです。NSData(NSKeyedArchiverから取得)をNSStringとして保存してから、NSDataとして読み込むことはできますか?

// this works well 
let metaItem = AVMutableMetadataItem() 
metaItem.key = AVMetadataCommonKeySource as NSCopying & NSObjectProtocol 
metaItem.keySpace = AVMetadataKeySpaceCommon 
metaItem.value = String("some text") as! NSCopying & NSObjectProtocol 

ので、代わりのちょうどString私は、カスタムオブジェクトをシリアル化したいと思います:

class ARTRMetadata: NSObject, NSCoding { 
    // ... 
    required init(coder aDecoder: NSCoder) { 
     //... 
    } 
    func encode(with aCoder: NSCoder) { 
     //... 
    } 
} 

私はStringDataを変換しようとした、それは今私がData.txtにすることを書き込み/読み出しでstucked、墜落ファイル:

static func saveMetadataObjectAsText(memento: ARTRMetadata)->String { 
     let tempFilepath = NSTemporaryDirectory().appending("someFile2.txt") 
     FileManager.default.createFile(atPath: tempFilepath, contents: nil, attributes: nil) 

     if NSKeyedArchiver.archiveRootObject(memento, toFile: tempFilepath) {} 
     else { print("archiveRootObject toFile: FAILURE") } 

     do { 
      let contentsFeedToMetadataItem = try String(contentsOfFile: tempFilepath) 
      //let contentsFeedToMetadataItem = try String(contentsOfFile: tempFilepath, encoding: String.Encoding.utf8) // The file “someFile2.txt” couldn’t be opened using text encoding Unicode (UTF-8). 
      return contentsFeedToMetadataItem 
     } 
     catch { print(error) } 
     return "ERROR in contentsFeedToMetadataItem" 
    } 

"ファイル" someFile2.txt "を開くことができなかったためクラッシュしましたその内容のテキストエンコーディングを特定できないためです。

NSKeyedArchiverから得られたNSDataが有効でないと思われるのは、NSStringです。私が正しいとすれば、データをテキストとしてダンプする方法は?そしてそれを同じバイト(NSKeyedUnarchiver)で復元しますか?

ありがとうございます!

答えて

1

なぜデータをテキストファイルとして保存したいですか? Dataを文字列として保存することができても(実際にはbase64でエンコードすることができます)、とにかく人間が読めるわけではありません。うまくいけば、base64を流暢に読むことができる人はほとんどいません。

短いストーリー、Dataを直接ディスクに保存しておきます。 Dataは適切なAPIを提供します。

ところでarchiveRootObject(toFileと書いているので、と書いてありますので、try Data(contentsOfFile: tempFilepath)と読んでください。

+0

ありがとうございました!私は月曜日にそれを確認し、それから受け入れます。 :) –

関連する問題