0
我在計算遞歸操作時遇到了問題。我正在創建一個站點地圖生成器,我想要統計每個URL鏈接的次數。到目前爲止,我在計算兩個以上時遇到了問題!但至少它根本不重要。遞歸計數
這裏是我的代碼:
- (void)parseURL:(NSURL*)URL
{
NSLog(@"Parsing URL: %@", URL);
// Check for URL in visited Array
if ([self.visitedURLs containsObject:URL]) {
NSLog(@"URL Already Visited...");
// Add 1 to the count of links to this URL
[[self.collectedURLs objectForKey:[URL absoluteString]] addToIncomingLinks];
NSLog(@"Updating Link Count... (%d)", [[self.collectedURLs objectForKey:[URL absoluteString]] incomingLinks]);
// Done parsing this URL, nothing else to do here...
} else {
... Filter URLs and other stuff ...
// Add URL as visited
[self.visitedURLs addObject:URL];
// Add filtered URL to Dictionary with link count of 1
[self.collectedURLs setObject:[[OBAURLData alloc] init] forKey:workingURL];
// Reload Table
[self.crawlTableView reloadData];
// parse found URLs
[self parseURL:[NSURL URLWithString:workingURL]];
}
}
// From the OBAURLData Object
- (id)init
{
if ((self = [super init])) {
self.incomingLinks = 1;
}
return self;
}
- (void)addToIncomingLinks
{
self.incomingLinks = self.incomingLinks + 1;
}
的所有代碼如預期,除了計數也不能高於2即使NSLog的報表都顯示爲已訪問兩次以上的URL的作品。
難道這是因爲遞歸還是我只是沒有看到我的問題?
謝謝肖恩,我完全錯過了。每次找到URL都會替換字典中的鍵/值對。在添加密鑰之前添加密鑰檢查之後,我得到了我期望的結果。我甚至不把它看作是一個可能的問題。 – Chris 2013-02-13 23:29:52
不用擔心克里斯高興你解決了你的問題:) – Shaun 2013-02-14 01:36:50