gpt4 book ai didi

ios - 为什么这不是 for 循环 "looping"或给出有关嵌套动画的错误?

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

我有一个循环来检查文件扩展名是否在数组上:

NSArray* validExtensions = [NSArray arrayWithObjects:@"jpg", @"jpeg", @"png", @"gif", nil];
for (NSString *ext in validExtensions) {
NSLog(@"filePath: %@\n extension:%@", ext, filePath.pathExtension);
if ([ext isEqualToString:[self.filePath pathExtension]]) {
PhotoDetailView *detView = [[PhotoDetailView alloc] initWithNibName:@"PhotoDetailView" bundle:nil];
detView.image = [UIImage imageWithContentsOfFile:self.filePath];
[self.navigationController pushViewController:detView animated:YES];

} else {
DetailView *theDetail = [[DetailView alloc] initWithNibName:@"DetailView" bundle:nil];
theDetail.title = self.fileName;
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"My Files" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
theDetail.textString = self.filePath;
[self.navigationController pushViewController:theDetail animated:YES];

}
}

出于某种原因,如果在 ifelse 之后我放了 break; 它就匹配 jpg 条目在数组中。如果我删除它,我会在日志中得到关于嵌套动画的奇怪信息,并且会推送多个 View :

  • 在意外状态下完成导航转换。导航栏 subview 树可能会损坏。
  • 对开始/结束外观转换的调用不平衡。
  • 嵌套的推送动画会导致导航栏损坏

我做错了什么?

最佳答案

我不确定在 for 循环中使用 break 时您的期望是什么,除了它应该中断循环(退出而不继续下一个项目).所以...第一次是使用您的第一个元素 (@"jpg"),它会在其中执行某些操作然后停止。

此外,您的代码根本没有按照您所说的去做。你说,“我有一个循环来检查文件扩展名是否在数组上”,但你的代码实际上创建了一个文件扩展名数组并尝试为每个文件扩展名执行导航。

除非我没有理解您的意思,否则我认为您不需要 for 循环。我认为您想从任何需要的地方获取您的扩展名(某个选择的文件名?),然后询问 validExtensions 数组是否包含您的文件扩展名:

if ([validExtensions containsObject:someExtension])
{
// navigate to the photo detail / @"PhotoDetailView" view
} else {
// navigate to the detail / @"My Files" view
}

关键区别在于您现在是在询问数组是否包含对象(扩展名),而不是循环数组、找到匹配项并尝试在此处中断。那是你的设计错误。

您的错误(触发多个导航及其关联的日志条目的原因)是您点击了每个有效的扩展名,如果它与您的文件扩展名匹配,则导航到照片详细信息 View ,或者您的“我的文件” View ,如果不是...并且您正在为有效扩展数组中的每个条目执行此操作,从而产生四次导航。

如果我没弄对,请更新您的问题以阐明您的总体目标。

关于ios - 为什么这不是 for 循环 "looping"或给出有关嵌套动画的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8188236/

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