首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于尝试使用UIImage: imageNamed设置UIImage:imageNamed感到困惑:

对于尝试使用UIImage: imageNamed设置UIImage:imageNamed感到困惑:
EN

Stack Overflow用户
提问于 2009-06-02 04:59:36
回答 3查看 1.7K关注 0票数 1

我创建了一个包含NSDictionary结构的plist。键是一个标签(用于填充tableview cell.text),该值是我想要用来“动态”填充cell.image的文件名。确切的png文件名被加载到项目中。

为了使事情变得更简单(正如我想的那样),我将plist加载到一个NSDictionary中,然后将其分离成两个数组(使用allKeys和allValues)。

在试图设置一个单元格映像时,我不明白为什么这样做是有效的:

代码语言:javascript
复制
cell.image = [UIImage imageNamed:@"bad.png"];

而这并不是(在模拟器中-我在调试器中得到一个应用程序崩溃和阻塞):

代码语言:javascript
复制
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];

我可以将下一行放在第二段代码之前,它工作得很好,所以我似乎从objectAtIndex获得了一个objectAtIndex:

代码语言:javascript
复制
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);

我还尝试创建一个临时NSString并将rowImageList objectAtIndex:分配给它,然后使用该NSString提供imageNamed:。

以下是调试器的一些信息:

-NSCFArray长度:发送到实例0x262d910的不可识别的选择器 由于“NSInvalidArgumentException”异常终止应用程序,原因:“* -NSCFArray长度:发送到实例0x262d910的未识别选择器”

如果你需要更多的信息/代码,请告诉我。

编辑:下面是我如何填充rowImageList:

代码语言:javascript
复制
NSArray *myRowImages = [[NSArray alloc] init]; 
myRowImages = [searchFilterList allValues]; 
self.rowImageList = [myRowImages copy]; 
[myRowImages release]; 
//where searchFilterList is an NSDictionary that I loaded from a plist

这是我的剧本的截图: IMG

[1 /IMG ]

编辑:修订后的rowImageList总体:

代码语言:javascript
复制
 NSMutableArray *myRowImages = [[NSMutableArray alloc] init];
 NSEnumerator *enumerator = [searchFilterList objectEnumerator];
 id object;

 while ((object = [enumerator nextObject])) {
     [myRowImages addObject:[object objectAtIndex:0]];
 }
 self.rowImageList = myRowImages; //edit: added self. prefix
 [myRowImages release];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-02 05:05:15

我将再次检查NSLog()的输出,并确保它不是包含NSString的数组。这就是错误告诉您的;您正在传递一个NSArray,其中期望有一个NSString。

票数 1
EN

Stack Overflow用户

发布于 2009-06-02 05:11:49

此错误意味着rowImageList objectAtIndex:indexPath.row返回的是数组,而不是预期的字符串。

打印值的原因是为了打印数组,还需要在NSLog语句中指定%@。

尝试调试该方法并检查rowImageList objectAtIndex:indexPath.row的类。它很可能是一个数组。

票数 1
EN

Stack Overflow用户

发布于 2009-06-02 05:57:11

您确定您的plist是键/字符串对,并且没有以某种方式将名称包装在数组中吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档