SWIFT:在解码 HTML 实体时在事务中调用 +[CATransaction synchronize]

Posted

技术标签:

【中文标题】SWIFT:在解码 HTML 实体时在事务中调用 +[CATransaction synchronize]【英文标题】:SWIFT: +[CATransaction synchronize] called within transaction while decoding HTML entities 【发布时间】:2015-02-11 15:23:19 【问题描述】:

我正在制作一个获取博客 JSON 内容的应用程序。博客文章的标题显示在 tableView 中。

获取的标题是 html 编码的。所以我用这段代码解码了它们

func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) 
    let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject

    var encodedString = object.valueForKey("title")!.description
    var encodedData = (encodedString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
    var attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
    var attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)

    var decodedString = attributedString.string
    cell.textLabel?.text = decodedString

    // cell.detailTextLabel?.text = object.valueForKey("publishedDate")!.description

我可以完成解码,并且标题完美地显示在模拟器中。但控制台显示此错误ThisIsMe[6837:2029906] +[CATransaction synchronize] called within transaction 4 次。代码中没有其他错误,所有其他功能都运行良好。

请帮忙

【问题讨论】:

NSAttributedString 和 HTML 也有同样的错误。 【参考方案1】:

这个问题是在解码HTML实体时出现的,所以我寻找了另一种解码方式并使用了以下代码:

 func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) 
                let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject


      let eTitle:NSString = object.valueForKey("title")!.description
      let deTitle  = eTitle.stringByDecodingHTMLEntities()
      cell.textLabel?.text = deTitle

之前,stringByDecodingHTMLEntities() 丢失了。所以我采取了这种方法。

注意:要获取stringByDecodingHTMLEntities(),我们需要导入NSString+HTML.h,从这里NSString category for HTML

【讨论】:

以上是关于SWIFT:在解码 HTML 实体时在事务中调用 +[CATransaction synchronize]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中解码 HTML 实体?

AngularJs:如何在 HTML 中解码 HTML 实体? [复制]

+[CATransaction synchronize] 搜索时在事务内调用

当 UIsearchBar 点击和键盘显示时在事务中调用

在android中解码HTML实体

如何在 C 中解码 HTML 实体?