2015-01-11 86 views
1

使用iOS的QR掃描儀。生成我自己獨特的QR碼以匹配每個「屏幕」。 下面是用於列出QR掃描儀發現的所有屏幕的代碼片段。這樣可以很好地掃描QR碼並打開相應的屏幕。如何跟蹤某些屏幕打開?

我現在需要的是跟蹤某個屏幕以及它被掃描和顯示的次數,以便如果顯示的次數超過3次,將出現不同的屏幕。

這個想法是,如果相同的QR碼掃描超過3次,會出現一個警告屏幕。 任何想法如何做到這一點?

//loop through every screen in the applications list of screens 
    for(int i = 0; i < [[appDelegate.rootApp screens] count]; i++){ 
     BT_item *thisScreen = [[appDelegate.rootApp screens] objectAtIndex:i]; 
     // [BT_debugger showIt:self message:[NSString stringWithFormat:@"thisScreen:%@", thisScreen.itemId]]; 

     if ([thisScreen.itemId isEqualToString:result]) { 
      [self handleTapToLoadScreen:thisScreen theMenuItemData:nil]; 
      return; 

回答

1

您可以使用NSCountedSet來跟蹤每個代碼被掃描的次數。 NSCountedSet將舉行一個無序對象集,以及有多少次,他們已經被添加到組

因此,例如,以下內容:

NSCountedSet *countedSet = [[NSCountedSet alloc] init]; 
NSArray *codes = @[@"a", @"b", @"c", @"d", @"a", @"b", @"a", @"a"]; 

for (NSString *code in codes) { 
    [countedSet addObject:code]; 

    if ([countedSet countForObject:code] > 3) { 
     NSLog(@"more than 3"); 
    } else { 
     NSLog(@"3 or less"); 
    } 
} 

NSLog(@"%@",countedSet); 

輸出

3或少

3以下

3以下

3或更小

3以下

3以下

3以下

超過3

(d 1,B 2,C 1,一個[ 4])

並且由於NSCountedSet符合NSCoding,所以很容易將您的設置對象序列化並將其存儲爲在啓動之間保持不變。

+0

K謝謝!我對邏輯部分並不擅長,但仍然在努力學習。我會修補一下。希望我可以要求更多的幫助,如果需要:) –

+0

@IanJames沒關係。只要你確保你在NSCountedSet的同一個實例上做了所有的比較,這個類的用法應該是相當直接的。對於最初的回答感到抱歉,我想我被困在迅捷裝備中。 –

+0

那麼我會使用「結果」爲countset?無法開始。更多的是在這個級別的黑客攻擊。我真的很感謝幫助 –