ビデオメタデータにいくつかの情報を保存します。今、私はテキストを保存することができます、それは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) {
//...
}
}
私はString
にData
を変換しようとした、それは今私が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
)で復元しますか?
ありがとうございます!
ありがとうございました!私は月曜日にそれを確認し、それから受け入れます。 :) –