我想要存儲一個URL到UILabel中,以便當用戶觸摸標籤時,它將它們帶到UIWebView中的那個URL。在NSDictionary中使用objective-c對象
我宣佈一個的NSDictionary像這樣:
NSMutableArray *linksArray = [[NSMutableArray alloc] init];
[linksArray addObject: [NSValue valueWithNonretainedObject: newsItem1ReadMoreLabel]];
[linksArray addObject: [NSValue valueWithNonretainedObject: newsItem2ReadMoreLabel]];
[linksArray addObject: [NSValue valueWithNonretainedObject: newsItem3ReadMoreLabel]];
[linksArray addObject: [NSValue valueWithNonretainedObject: newsItem4ReadMoreLabel]];
[linksArray addObject: [NSValue valueWithNonretainedObject: newsItem5ReadMoreLabel]];
//NSString *ageLink = @"http://www.theage.com.au";
NSArray *defaultLinks = [NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", nil];
self.urlToLinkDictionary = [[NSMutableDictionary alloc] init];
self.urlToLinkDictionary = [NSDictionary dictionaryWithObjects:defaultLinks forKeys:linksArray];
考慮到我使用的NSValue
爲重點,如何獲取/設置與該鍵關聯的URL因爲我只有在UILabels引用?
這是我有什麼,但它不工作:
for(NSValue *key in [self.urlToLinkDictionary allKeys])
{
if ([key nonretainedObjectValue] == linkedLabel)
{
[self.urlToLinkDictionary setValue:[newsItem link] forKey: key];
}
}
,但我得到一個錯誤:「objc_exception_throw」解決
不確定這是錯誤的原因,但是使用'NSDictionary dictionaryWithObjects'設置urlToLinkDictionary,在這種情況下,循環中的setValue應該失敗。使用'NSMutableDictionary dictionaryWithObjects'。此外,不需要dictionaryWithObjects上方的alloc + init行,並導致泄漏。 – DyingCactus 2010-05-08 02:37:19