我組建一個程序,讀取傳感器蜂窩電話內,並保存所述傳感器數據到核心數據的SQLite模型,其中每個集合屬於特定會話讀數的NSArray到NSData的編碼格式
的程序向用戶提供通過電子郵件發送特定會話的.csv文件的選項。
從未這樣做過,我通過初始化委託和上下文,以及在覈心數據中搜索與指定會話有關的實體來解決這個問題。滿足會話屬性的實體然後將其數據字段(gps,mag,accel,gyro)讀取並放入字符串中。然後將字符串附加到數組。所有這些都很快完成。
在實體被搜索並創建數組後,我嘗試創建一個csv文件以附加到電子郵件。該文件已成功附加,但我的編碼技術正在呈現附加的數據,並附加到文件中。
我想在手機上保存文件並通過電子郵件將副本發送給用戶。
這是我必須再次轉換爲NSData的前更改陣列來的NSArray:
let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true);
let path = paths[0].stringByAppendingPathComponent("SessionData.csv")
if !NSFileManager.defaultManager().fileExistsAtPath(path)
{
NSFileManager.defaultManager().createFileAtPath(path, contents: nil, attributes: nil)
}
else
{
NSFileManager.defaultManager().createFileAtPath(path, contents: nil, attributes: nil)
}
var handle: NSFileHandle = NSFileHandle(forWritingAtPath: path)
handle.truncateFileAtOffset(handle.seekToEndOfFile())
var arrayToWriteNS = (arrayToWrite as NSArray)
var dataNS: NSData = NSKeyedArchiver.archivedDataWithRootObject(arrayToWrite as NSArray)
handle.writeData(dataNS)
mc.setSubject(emailTitle)
mc.addAttachmentData(dataNS, mimeType: "text/csv", fileName: "SessionData.csv")
這裏是預謀和附加數據:
bplist00‘()T$topX$objectsX$versionY$archiver—TrootĨ
!U$null「
V$classZNS.objectsÄ©ÄÄÄÄÄÄÄÄ Ä
「我的數據」
「"#$'X$classesZ$classname¢%&WNSArrayXNSObjectWNSArray܆_NSKeyedArchiver(25:<IOT[fhrtvxz|~ÄÇÑ·Ø}KÁµÉQV_jmu~Üã*ù
在具有28,000個實體的大型數據會話中,可能會有約750行的前置數據。
任何幫助,你可以提供將不勝感激。我是新來的iOS,Obj-C和swift,因此我積極有更好的方式來做到這一點,我只是還沒有發現一個更好的方法呢。
謝謝。
更新:截止起來只用NSString的數據編碼和寫入我的文件在增量:
handle.truncateFileAtOffset(handle.seekToEndOfFile())
var stringToWriteNS = (stringToWrite as NSString).dataUsingEncoding(NSUTF8StringEncoding)
handle.writeData(stringToWriteNS!)
你不需要'NSKeyedArchiver',它是用於歸檔和恢復類。您需要瀏覽數組並以您向用戶展示的格式創建每個項目的文本表示形式。 – zaph 2014-09-02 03:13:38