Php swift 3:从MySQL获取rtf格式的文本

Php swift 3:从MySQL获取rtf格式的文本,php,nsurlsession,rtf,Php,Nsurlsession,Rtf,在我的应用程序中,我读取了很多rtf文件,并将文本放入带有AttributedText的UITextView中 现在我想将所有这些文件放入MySQL数据库,并使用PHP文件和URLSession读取它们 import UIKit class ViewController: UIViewController, URLSessionDataDelegate { var returnString = "" var aOverskrifter:NSMutableArray = []

在我的应用程序中,我读取了很多rtf文件,并将文本放入带有
AttributedText
UITextView

现在我想将所有这些文件放入MySQL数据库,并使用PHP文件和
URLSession
读取它们

import UIKit

class ViewController: UIViewController, URLSessionDataDelegate {

    var returnString = ""
    var aOverskrifter:NSMutableArray = []
    var aLilleTekster:NSMutableArray = []
    var aLangTekster:NSMutableArray = []
    var styledText = NSMutableAttributedString()


    @IBOutlet var txtWikiTekst: UITextView!

    //** Button to get data from php file
    @IBAction func btnHentWiki_Click(_ sender: UIButton) {

        //** Læs fra nettet
        let myURLString = "xxxx.php"

        HentResponseString(url: myURLString)

    }

    //** Show rtf text in UITextView
    @IBAction func btnVisData_Click(_ sender: UIButton) {

        txtWikiTekst.attributedText = styledText
    }

    //** Function the gets the text from php page
    func HentResponseString(url: String) {

        let url = URL(string: url)!
        let request = URLRequest(url: url)


        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data else {
                print("request failed \(error)")
                return
            }

            let responseString = String(data: data, encoding: .utf8)

            //** Bearbejd responseString
            let lines = responseString?.components(separatedBy: "#")

            for line in lines! {

                let fields = line.components(separatedBy: "$")

                var xcounter:Int = 0

                for field in fields {

                    //** Overskrift
                    if xcounter == 0 {
                        self.aOverskrifter.add(field)
                    }
                    //** Lille tekst
                    if xcounter == 1 {
                        self.aLilleTekster.add(field)
                    }
                    //** Lang tekst
                    if xcounter == 2 {
                        self.aLangTekster.add(field)
                        styledText = field
                    }

                    xcounter+=1
                }
            }            
        }
        task.resume()

    }



    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
但是当我运行这段代码时,我只看到
UITextView
中的rtf文本,而没有看到格式化文本

在数据库中我使用UTF8,在PHP文件中我使用UTF8,但它不能正常工作


有人知道如何解决这个问题吗,或者你能给我指出正确的方向吗。

一旦你有了RTF文本,你应该将它转换成
数据
对象,并使用
数据
对象初始化你的
NSAttribute字符串
变量。为了演示这一点,我在TextEdit中创建了一个RTF“Hello,world”文档,红色文本为“Hello”,蓝色文本为“world”。以下代码可以在游乐场中运行,它从保存的TextEdit.rtf文件的内容创建彩色属性字符串:

let rtfText = "{\\rtf1\\ansi\\ansicpg1252\\cocoartf1504\\cocoasubrtf760\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;\\red255\\green0\\blue0;\\red0\\green0\\blue255;}\n{\\*\\expandedcolortbl;;\\csgenericrgb\\c100000\\c0\\c0;\\csgenericrgb\\c0\\c0\\c100000;}\n\\margl1440\\margr1440\\vieww12600\\viewh7800\\viewkind0\n\\pard\\tx720\\tx1440\\tx2160\\tx2880\\tx3600\\tx4320\\tx5040\\tx5760\\tx6480\\tx7200\\tx7920\\tx8640\\pardirnatural\\partightenfactor0\n\n\\f0\\fs24 \\cf2 Hello\\cf0 , \\cf3 world}"

let rtfData = rtfText.data(using: .utf8)!
let attributedString = try! NSAttributedString(data:rtfData, options: [:], documentAttributes: nil)

你能提供完整的代码吗?代码现在更新了。如果我从数据库中读取并在文档目录中创建一个新文件,我可以用格式化文本填充新文件。但是我无法用正确的格式将这个新文件的内容读入我的文本视图。如果我将一个rtf文件复制到我的包中,我可以毫无困难地读取它,并且它显示正确。那么,为什么我不能对文档目录中的文件执行同样的操作呢?