gpt4 book ai didi

ios - 长时间运行的解析操作正在主线程上执行似乎无法摆脱这个

转载 作者:行者123 更新时间:2023-11-28 22:00:23 26 4
gpt4 key购买 nike

我收到长时间运行的解析操作错误。但我似乎不明白为什么。在选择一个选项时,这将打开一个 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/

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