сохранить атрибутивную строку с вложенным изображением в основных данных - PullRequest
0 голосов
/ 06 февраля 2019

я пытаюсь сохранить nsattributed string с nstextattachment в основных данных, но не сохраняется, когда представление загружается, данные, которые я пытаюсь сохранить, не загружаются

я создал преобразуемый атрибут в coredataдля текста с изображением я также изменил тип атрибута на nsattributed string в подклассе

override func viewDidLoad() {
        super.viewDidLoad()

        detail = coreDataManager.shared.fetchTransactionDetail(transaction: parentTransaction!)
        textView.attributedText = detail?.textWithImage
}

 @IBAction func doneAction(_ sender: UIBarButtonItem) {
        textView.resignFirstResponder()
        doneButton.isEnabled = false

        parentTransaction?.desc = textView.attributedText.string
        detail?.setValue(self.textView.attributedText, forKey: "textWithImage")
        coreDataManager.shared.saveContext()
    }

 let imagePickerController = UIImagePickerController()

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
// Local variable inserted by Swift 4.2 migrator.
let info = convertFromUIImagePickerControllerInfoKeyDictionary(info)


        let image = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.originalImage)] as? UIImage

        let attachment = NSTextAttachment()
        var scalingFactor = 1.0
        let imageSize = image?.size
        let width = textView.frame.size.width
        if (width < imageSize!.width){
            scalingFactor = Double((width)*CGFloat(scalingFactor) / imageSize!.width)
        }
        let rect = CGRect(x: 0, y: 0, width: imageSize!.width*CGFloat(scalingFactor), height: imageSize!.height*CGFloat(scalingFactor))
        let newImage = UIImage(data: (image?.jpegData(compressionQuality: 0.1))!)
        attachment.image = UIImage.resize(image: newImage!, targetSize: rect.size)
        //calculate new size.  (-20 because I want to have a litle space on the right of picture)
        let newImageWidth = (textView.bounds.size.width - 50 )
        scalingFactor = Double(newImageWidth/(image?.size.width)!)
        let newImageHeight = (image?.size.height)! * CGFloat(scalingFactor)

        //resize this
        attachment.bounds = CGRect.init(x: 10, y: 0, width: newImageWidth, height: newImageHeight)

        //put your NSTextAttachment into and attributedString
        let attString = NSAttributedString(attachment: attachment)

        //add this attributed string to the current position.
        textView.textStorage.append(attString)
        textView.font =  UIFont(name: "Arial", size: 18)
        picker.dismiss(animated: true, completion: nil)
    }

  coreDataManager.shared.createTupleDetail(text: "", image: self.image!.jpegData(compressionQuality: 0.1)! as NSData as Data, tuple: self.tupleCells[self.tupleCells.count-1])

. Он должен сохранить текст, содержащий изображение, и загрузить его снова, когда представление загружено, но это не происходит.

...