作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到长时间运行的解析操作错误。但我似乎不明白为什么。在选择一个选项时,这将打开一个 View Controller ,其中包含该选项的所有详细信息
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Check that a new transition has been requested to the DetailViewController and prepares for it
if ([segue.identifier isEqualToString:@"TradeSend"]){
// Capture the object (e.g. exam) the user has selected from the list
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
PFObject *object = [self.objects objectAtIndex:indexPath.row];
// Set destination view controller to DetailViewController to avoid the NavigationViewController in the middle (if you have it embedded into a navigation controller, if not ignore that part)
//UINavigationController *nav = [segue destinationViewController];
DMKDetailTradeFairViewController *detailViewController = (DMKDetailTradeFairViewController *) [segue destinationViewController];
detailViewController.exam = object;
NSLog(@"object details: %@",object);
}
}
下一个 View Controller 打开时出现错误
- (void)viewDidLoad
{
[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(320, 1300)];
self.compname.text = [self.exam objectForKey:@"name"];
self.address1.text = [self.exam objectForKey:@"address1"];
self.address2.text = [self.exam objectForKey:@"address2"];
self.postcode.text = [self.exam objectForKey:@"postcode"];
self.tel.text = [self.exam objectForKey:@"phone1"];
self.email.text = [self.exam objectForKey:@"email"];
self.NewName.text = [self.exam objectForKey:@"ContactName"];
self.standnumber.text = [self.exam objectForKey:@"StandNumber"];
self.details.text = [self.exam objectForKey:@"Description"];
[[self.exam objectForKey:@"Logo"] getData];
self.Logo.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"Logo"] getData]];
[[self.exam objectForKey:@"image1"] getData];
self.image1.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image3"] getData]];
[[self.exam objectForKey:@"image2"] getData];
self.image2.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image2"] getData]];
[[self.exam objectForKey:@"image3"] getData];
self.image3.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image1"] getData]];
[super viewDidLoad];
// Do any additional setup after loading the view.
}
预先感谢您的帮助
我已经在其中的 4 个上添加了 getDataInBackgroundWithBlock
,但是另外 4 个不让我添加它,因为一些关于发送 void 的事情
这是我能做的
[[self.exam objectForKey:@"Logo"] getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
self.Logo.image = [[UIImage alloc] initWithData:data];
}];
self.Logo.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"Logo"] getData]];
[[self.exam objectForKey:@"image1"] getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
self.Logo.image = [[UIImage alloc] initWithData:data];
}];
self.image1.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image1"] getData]];
[[self.exam objectForKey:@"image2"] getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
self.Logo.image = [[UIImage alloc] initWithData:data];
}];
self.image2.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image2"] getData]];
[[self.exam objectForKey:@"image3"] getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
self.Logo.image = [[UIImage alloc] initWithData:data];
}];
self.image3.image = [[UIImage alloc] initWithData: [[self.exam objectForKey:@"image3"] getData]];
最佳答案
您走在正确的轨道上。不过,您应该这样做:
[[self.exam objectForKey:@"Logo"] getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
self.Logo.image = [[UIImage alloc] initWithData:data];
}];
对于每张图片。该 block 以 NSData 格式返回数据,您当前未使用它。这样,您将使用 block 中的数据并在后台加载所有数据,而不会阻塞主线程。
关于ios - 长时间运行的解析操作正在主线程上执行似乎无法摆脱这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306405/
我是一名优秀的程序员,十分优秀!