gpt4 book ai didi

html - 将 HTML 文本分配给 NSAttributedString 会在全局队列上抛出 EXC_BAD_ACESS

转载 作者:行者123 更新时间:2023-11-28 03:15:59 25 4
gpt4 key购买 nike

我正在将 HTML 文本分配给 NSAttributedString。然后将此属性字符串分配给 cellForRowAtIndexPath 方法中的 UitableViewCell 中的 UILabel 之一。
由于单元格重用 initWithData: 方法导致 UI 缓慢
/> 因此,我编写了在全局队列上执行的代码。我正在做这样的事情:

-(void)assignAttrText:(NSDictionary *)dict{

NSDictionary *msgThreadDict = [dict objectForKey:@"messgDict"];
__block DRMessageThreadTableViewCell *cell = [dict objectForKey:@"cell"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSError *err = nil;
NSAttributedString *attributedString =
[[NSAttributedString alloc]
initWithData: [[msgThreadDict objectForKey:@"text"] dataUsingEncoding:NSUTF8StringEncoding]
options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes: nil
error: &err];
if(err){
NSLog(@"Unable to parse label text: %@", err);
}
else{
cell.messageTextLabel.attributedText = attributedString;

}
});

关于是什么导致应用程序崩溃的任何线索,方法是 EXC_BAD_ACCESS:

[[NSAttributedString alloc]
initWithData: [[msgThreadDict objectForKey:@"text"] dataUsingEncoding:NSUTF8StringEncoding]
options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes: nil
error: &err];

最佳答案

[msgThreadDict objectForKey:@"text"] 创建一个 NSData *mydata 对象,然后使用 [[NSAttributedString alloc] initWithData: mydata ...

我认为你的对象不是 NSData 类型,使用字符串然后转换为数据,因此 EXC_BAD_ACCESS

NSString *ceva = [NSString stringWithFormat:@"%@",[msgThreadDict objectForKey:@"text"]];  
NSData *mydata = [ceva dataUsingEncoding:NSUTF8StringEncoding];

关于html - 将 HTML 文本分配给 NSAttributedString 会在全局队列上抛出 EXC_BAD_ACESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27814035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com