ios-修改UITextview内容遇到问题

问题描述

修改UITextview内容遇到问题

从API中获取数据,然后将数据写入UITextview。但是系统报出错误。

下面是读取写入数据的代码:

NSOperationQueue *apiCallsQueue = [[NSOperationQueue alloc] init];
NSString *urlstring=@"x.com/api.php?id=";
urlstring =[urlstring stringByAppendingString:self.newsId];
NSURL *newsdetail = [NSURL URLWithString:urlstring];
newsdetailrequest = [NSURLRequest requestWithURL:newsdetail];

@try
{
    [NSURLConnection sendAsynchronousRequest:newsdetailrequest queue:apiCallsQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
    {
        NSDictionary *dictionary =  [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];
        [textview setText:[dictionary objectForKey:@"title"]];
    }];
}
@catch (NSException *exception)
{
    UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:@"Error"
                                                       delegate:nil
                                              cancelButtonTitle:@"Tamam"
                                              otherButtonTitles:nil];
    [errorView show];
}

错误输出:

2013-06-18 16:37:16.214 xpro[6816:5103] bool _WebTryThreadLock(bool), 0x7142ee0: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...
1   0x3571fe9 WebThreadLock
2   0x15846e -[UITextView setText:]
3   0x5f00 __39-[NewsDetailViewController viewDidLoad]_block_invoke
4   0xbdbcf8 __block_global_0
5   0xb4375a -[NSBlockOperation main]
6   0xb11453 -[__NSOperationInternal start]
7   0xb11164 -[NSOperation start]
8   0xb9da31 __block_global_6
9   0x49ff53f _dispatch_call_block_and_release
10  0x4a11014 _dispatch_client_callout
11  0x4a022e8 _dispatch_root_queue_drain
12  0x4a02450 _dispatch_worker_thread2
13  0x96c53e72 _pthread_wqthread
14  0x96c3bd2a start_wqthread
(lldb)

controller.h文件:

@interface NewsDetailViewController : UIViewController
{
NSURLRequest *newsdetailrequest;
NSMutableData *newsdetailData;
}
@property (weak, nonatomic) IBOutlet UINavigationBar *newsdetailTitle;
@property (weak, nonatomic) IBOutlet NSString *navBarTitle;
@property (weak, nonatomic) IBOutlet NSString *newsId;
@property (weak, nonatomic) IBOutlet UITextView *htmlDetail;

解决方案

在主线程中:

NSOperationQueue *apiCallsQueue = [[NSOperationQueue alloc] init];

NSString *urlstring=@"x.com/api.php?id=";
urlstring =[urlstring stringByAppendingString:self.newsId];

NSURL *newsdetail = [NSURL URLWithString:urlstring];
newsdetailrequest = [NSURLRequest requestWithURL:newsdetail];

@try
{
    [NSURLConnection sendAsynchronousRequest:newsdetailrequest queue:apiCallsQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
    {
        NSDictionary *dictionary =  [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];

        dispatch_async(dispatch_get_main_queue(),
        ^{
            [textview setText:[dictionary objectForKey:@"title"]];
        });
    }];
}
@catch (NSException *exception)
{
    UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:@"Error"
                                                       delegate:nil
                                              cancelButtonTitle:@"Tamam"
                                              otherButtonTitles:nil];
    [errorView show];
}
时间: 2024-11-03 21:41:25

ios-修改UITextview内容遇到问题的相关文章

iOS中UITextView方法解读

iOS中UITextView方法解读 常用属性解读: @property(nonatomic,assign) id<UITextViewDelegate> delegate; 设置代理属性 @property(nonatomic,copy) NSString *text; textView上的文本 @property(nonatomic,retain) UIFont *font; 设置文本字体 @property(nonatomic,retain) UIColor *textColor; 设置

sql修改字段内容

  1 2 3 --sql 修改字段内容 UPDATE 表 SET 字段=REPLACE(cast(字段 AS varchar(8000)),'被替换的内容','将要替换成的内容') UPDATE t_newsinfo SET [content]=REPLACE(cast([content] AS varchar(max)),'http://admin.thinkall.net.cn/','http://admin.xkpx.com/')

update-“alert(‘已更新’)”不要的话,修改的内容却都没有修改

问题描述 "alert('已更新')"不要的话,修改的内容却都没有修改 $.getJSON(${createLink(action: ""update"")}"" alert('已更新'));history.back()location.reload()上面的第三句返回函数"alert('已更新')"不要的话,修改的内容却都没有修改,有了这句,就正常修改了,这是为什么呢? 解决方案 jQuery.getJS

servlet-关于Servlet过滤器修改输出内容的疑惑

问题描述 关于Servlet过滤器修改输出内容的疑惑 如题,先上代码,代码很简单,一个将jsp输出内容转为大写字母的过滤器: ```public class UpperCaseFilter implements Filter { private HttpServletRequest request; private HttpServletResponse response; public void init(FilterConfig config) throws ServletException

visual studio-VS2015新建空白通用应用,未修改任何内容,直接生成解决方案,报错,请问是什么问题

问题描述 VS2015新建空白通用应用,未修改任何内容,直接生成解决方案,报错,请问是什么问题 这是报错信息 1>C:Program FilesMSBuildMicrosoft.NetNativeMicrosoft.Net.CoreRuntime.targets(135,5): error MSB3774: 找不到 SDK"Microsoft.VCLibs, Version=14.0". 安装VS的时候我全打勾了 VS版本是Visual Studio 2015 Community

string-关于使用poi获取修并修改ppt内容的问题

问题描述 关于使用poi获取修并修改ppt内容的问题 为什么获取的ppt内容只能修改一次呢?遍历出所有内容修改,报异常 同一个ppt页修改两次 还报异常代码:SlideShow sss=new SlideShow(new HSLFSlideShow(""F:11123.ppt""));//"""" 内为文件的InputStream,建立SlideShow 2003Slide[] siles=sss.getSlides();//

ios开发-iOS 修改fram无效问题

问题描述 iOS 修改fram无效问题 用auto layout写了一个键盘出现时候,视图自动缩进的demo,成功了,但是同样的代码实现在另外一个工程上面就有问题了,问题来源于第一次的时候,修改view的frame成功了,但是没有动静,查看控制台修改成功了,但是下一次再修改的时候,它居然没有修改到,这个是为什么? 控制台输出:x,y,height,width ,两个视图需要修改,第一个改y,第二个改height 第一次修改前: 2015-05-17 17:19:15.266 ICU[3841:1

ie-如何禁止 知乎网站修改剪贴板内容!!

问题描述 如何禁止 知乎网站修改剪贴板内容!! 我负责里面的内容老是给加上一些版权什么什么的内容!很烦!但是设置了IE禁止访问剪贴板相关设置都不起作用! 解决方案 那个不是设置剪贴板的,用range对象搞的,用开发工具审查元素,直接赋值容器的内容,不要选择后ctrl+c 解决方案二: 禁止剪贴板应该没效果,不是这个原因

IOS registerClass tableView 内容不显示

问题描述 IOS registerClass tableView 内容不显示 初学IOS,TableViewCell为自定义的cell. 在- (void)viewDidLoad { NSString * identifier = @"TableViewCell"; [_tvHistory registerClass:[TableViewCell class] forCellReuseIdentifier:identifier]; } 在 -(UITableViewCell *)tab