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

时间:2015-02-11 15:23:20

标签: swift html-entities synchronize catransaction

我正在创建一个可以获取博客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次。代码中没有其他错误,其他功能也可以正常工作。

请帮助

1 个答案:

答案 0 :(得分: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