如何将属性字符串(文本)保存到文件(swift,可可)中?

fivyi3re  于 2023-01-01  发布在  Swift
关注(0)|答案(2)|浏览(156)

我有NSTextView,我可以将文本作为nsattributedstring。我可以使用NSSavePanel将文本保存到.txt文件中,作为纯文本,但不是格式化文本。

@IBAction func saveDNA(sender: AnyObject)
{
    let saveDNAtoFile:  NSSavePanel = NSSavePanel()
    saveDNAtoFile.canSelectHiddenExtension = true
    saveDNAtoFile.runModal()

    do
    {
        let exportedFileURL = saveDNAtoFile.URL
        let textDNA = self.inputDnaFromUser.string

        if exportedFileURL != nil
        {
            try textDNA!.writeToURL(exportedFileURL!, atomically: false, encoding: NSUTF8StringEncoding)
        }
    } catch
    {
    }
}

我如何使用NSSavePanel将attributedstring(文本)保存到文件中,以便以后能够打开此文件,在格式化文本之前进行所有操作?如果可以使用NSSavePanel,我应该在上面的代码中更改什么?

oaxa6hgo

oaxa6hgo1#

一天出来...好了,我已经弄清楚了斯威夫特2的代码(注意这个-选项:NSFileWrapperWritingOptions.Atomic).下面。我相信它会为像我这样的初学者保存时间,比这个标准功能有更多的时间来编写必要的和更有趣的算法。

@IBAction func saveDNA(sender: AnyObject)
{
    let saveDNAtoFile:  NSSavePanel = NSSavePanel()
    saveDNAtoFile.canSelectHiddenExtension = true
    saveDNAtoFile.runModal()

    do
    {
        let exportedFileURL = saveDNAtoFile.URL

        let textDNA = inputDnaFromUser.textStorage

        if exportedFileURL != nil
        {
            let range = NSRange(0..<textDNA!.length)

            let textTSave = try textDNA!.fileWrapperFromRange(range, documentAttributes: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType])
            try textTSave.writeToURL(exportedFileURL!, options: NSFileWrapperWritingOptions.Atomic, originalContentsURL: nil)

        }
    } catch
    {
    }
}
wgmfuz8q

wgmfuz8q2#

AppKit和UIKit为NSAttributedString增加了很多方法,用于序列化和反序列化,以前它们是单独文档,现在它们是统一的NSAttributedString documentation的一部分。
这里列出的方法太多了,但是在文档中您可以找到将NSAttributedString转换为多种格式(包括富文本格式)的方法(RTF格式)、HTML(从macOS 10.15和iOS 13开始)、降价(从macOS 12和iOS 15开始)等。你还可以转换为/从Data,在这种情况下,您可以通过在documentAttributes字典中设置适当的documentType来指定格式。与Data之间的转换支持一些格式,对于这些格式没有专用的方法。

相关问题