我創建了一個包含NSDictionary結構的plist。關鍵是一個標籤(我用它來填充tableview cell.text),這個值是我想用來'動態'填充cell.image的文件名。確切的png文件名被加載到項目中。爲了使事情變得更容易(所以我認爲),我將plist加載到一個NSDictionary中,然後將其分解爲兩個數組(使用allKeys和allValues)。在試圖使用UIImage設置cell.image時出現障礙:imageNamed:
在試圖建立一個細胞圖像,我不明白爲什麼這個工程:
cell.image = [UIImage imageNamed:@"bad.png"];
,這不(在模擬器 - 我得到一個應用程序崩潰和調試barfing):
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];
我可以在第二段代碼之前放置下一行,它工作的很好,所以看起來我從objectAtIndex得到一個NSString:
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);
我也嘗試創建一個臨時NSString並將[rowImageList objectAtIndex:]賦值給它,然後使用該NSString來提供imageNamed :.
下面是從調試器的一些信息:
- [NSCFArray長度]:發送到實例0x262d910
終止應用程序由於未捕獲 例外 'NSInvalidArgumentException' 的無法識別的選擇,原因是: 「* ** - [NSCFArray長度]:無法識別 選擇器發送到實例0x262d910'
讓我k現在如果你需要更多的信息/代碼。
編輯:這是我如何填充rowImageList:
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
這裏是我的plist的截圖: [IMG] http://i42.tinypic.com/14uwffa.jpg http://i42.tinypic.com/14uwffa.jpg [/ IMG]
編輯:修訂rowImageList人口:
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];
嗯...我得重新檢查一下。 rowImageList是一個數組,但我認爲我正在將'NSStrings'推入數組(即NSString對象數組)。 下面是我如何填充rowImageList: \t NSArray * myRowImages = [[NSArray alloc] init]; \t myRowImages = [searchFilterList allValues]; \t self.rowImageList = [myRowImages copy]; \t [myRowImages release]; - 其中searchFilterList是我從plist中加載的NSDictionary。 – kindaran 2009-06-02 05:20:45
好主,沒有格式很好。 – kindaran 2009-06-02 05:21:21
如果您正在跟蹤,我最終更改了 「rowImageList = myRowImages;」到 「self.rowImageList = myRowImages;」 在嘗試稍後在代碼中使用rowImageList時發生了奇怪的垃圾。 – kindaran 2009-06-03 04:21:45