代码之家  ›  专栏  ›  技术社区  ›  runmad

将NSString与循环中的图像文件名匹配

  •  0
  • runmad  · 技术社区  · 16 年前

    我有以下方法:

    -(UIImage *)flagFromOrigin:(NSString *)originString {
            NSRange range;
            for (NSString *arrayString in countryArray) {
                range = [[originString lowercaseString] rangeOfString:arrayString];
                if (range.location != NSNotFound) {
                    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", arrayString]];
                }
            }
            return nil;
        }
    

    在前面的类I中,初始化NSArray*countyArray并添加文件名(@“美国”、@“加拿大”、@“德国”、@“丹麦”等)。

    我希望有人能告诉我一个更好的方法,这样我就不必创建数组来循环,但是如果我可以直接查看文件名呢?这样,我就不必向数组中添加200多个NSString对象,而可能忽略一大堆对象。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Steve Madsen    16 年前

    originString 包含其他你不关心的文本。

    只包含您关心的文本,然后将这些图像移到资源的子目录中,并调用 imageNamed: 直接。它会回来的 nil

    原串 ,那么我建议您首先考虑解决这个设计问题。


    查看文档以了解 -[NSFileManager contentsOfDirectoryAtPath:error:] .png 扩展名),然后使用该数组扫描匹配项。

    您应该按长度对数组排序,首先是最长的,以避免误报。我想不出一个国家的例子,但是对于州来说,你应该在“Virginia”之前勾选“West Virginia”,因为后者将匹配同样匹配前者的字符串。

    推荐文章