我正在编制一个程序,用于读取手机中的传感器,并将传感器数据保存到核心数据SQLite模型中,并包含与特定会话相关的每组读数。
该程序为用户提供了发送特定会话的.csv文件的选项。
以前从未这样做过,我通过初始化委托和上下文来处理这个问题,并搜索与指定会话相关的实体的核心数据。满足会话属性的实体然后将其数据字段(gps、mag、accel、陀螺仪)读取并放入字符串中。然后将字符串追加到数组中。都是迅速完成的。
在搜索实体并创建数组之后,我尝试创建一个csv文件,以便附加到电子邮件。该文件已成功附加,但我的编码技术提供了附加的数据,并附加到文件中。
我想保存一个文件在电话和电子邮件副本给用户。
在再次转换为NSArray之前,我必须将数组更改为NSData:
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和just都很陌生,因此我确信有更好的方法可以做到这一点,我只是还没有发现一个更好的方法。
谢谢。
UPDATE:最后只使用NSString数据编码并以增量方式写入我的文件:
handle.truncateFileAtOffset(handle.seekToEndOfFile())
var stringToWriteNS = (stringToWrite as NSString).dataUsingEncoding(NSUTF8StringEncoding)
handle.writeData(stringToWriteNS!)发布于 2014-09-02 03:18:19
您不需要NSKeyedArchiver,它用于归档和还原类。
您需要遍历数组,并以您要呈现给用户的格式创建每个项的文本表示形式。
快速搜索CocoaPods可以发现适合您需要生成csv格式数据的几个项目。
这一个可能是你所需要的。
csv相当简单,因此通过编写自己的代码将数据格式化为csv是合理的。
https://stackoverflow.com/questions/25615112
复制相似问题