2016-12-07 3 views
1

В моем приложении У меня есть много файлов rtf, которые я прочитал, и поместил текст в UITextView с AttributedText.swift 3: Получить текст в формате RTF от MySQL

Теперь я хочу поместить все эти файлы в базу данных 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. 
    } 


} 

Но когда я запускаю этот код, я вижу только текст Rtf в UITextView и не форматированный текст.

В базе данных я использую UTF8, а в файле PHP я использую UTF8, но он работает неправильно.

Кто-нибудь знает, как исправить это, или вы можете указать мне в правильном направлении.

+0

Можете ли вы предоставить полный код? – nitinsh99

+0

Код обновлен. –

+0

Если я прочитал из базы данных и создаю новый файл в каталоге документа, я могу заполнить новый файл форматированным текстом. Но я не могу прочитать содержимое этого нового файла в своем текстовом виде с правильным форматированием. Если я скопирую файл rtf в свой пакет, я без труда прочитаю его, и он будет показан правильно. Так почему я не могу сделать то же самое с файлом в каталоге документа? –

ответ

1

Как только у вас есть текст RTF, вы должны преобразовать его в объект Data и использовать объект Data для инициализации переменной NSAttributedString. Чтобы продемонстрировать это, я создал RTF-документ «Hello, world» в TextEdit, с «Hello» в красном тексте и «мир» в синем. Следующий код, который вы можете запустить в детской площадке, создает что цветные приписывали строку из содержимого сохраненного файла .rtf TextEdit:

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) 
Смежные вопросы