如何跟踪某些屏幕打开?

时间:2015-01-11 14:40:17

标签: ios

使用QR扫描程序进行IOS。生成我自己唯一的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 个答案:

答案 0 :(得分: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,a [4])

由于NSCountedSet符合NSCoding标准,因此您可以轻松地序列化您的设置对象并将其存储在启动之间保持不变。