2016-02-13 53 views
-1

我正在处理我的项目,当我滚动时,表格可以在tableview单元格中保留复选标记。我做到了,但现在我的问题是,我现在如何删除保存的复选标记?谢谢。删除保存在NSUserDefaults中的复选标记

下面是我为了节省对号使用的代码:

-(NSString *)getKeyForIndex:(int)index { 
    return [NSString stringWithFormat:@"KEY%d",index]; 
} 

-(BOOL)getCheckedForIndex:(int)index{ 
    if([[[NSUserDefaults standardUserDefaults] valueForKey:[self getKeyForIndex:index]] boolValue]==YES){ 
    return YES; 
    }else{ 
    return NO; 
    } 
} 

-(void)checkedCellAtIndex:(int)index{ 
    BOOL boolChecked = [self getCheckedForIndex:index]; 
    [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:!boolChecked] forKey:[self getKeyForIndex:index]]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 
+0

你可以使用'removeObjectForKey',但使用NSUserDefaults这样有点icky(技术术语) – Paulw11

回答

0

要删除密钥使用removeObjectForKey:,用于一键使用setBool:forKey:设置一个布尔值,得到一个布尔值密钥使用boolForKey。这些也可以在NSUserDefaults documentation中找到。

也无论你从来没有写if(e == YES)只写if(e)(前者可能会给你一个不正确的结果 - 为什么留作练习);而不是书写if(e) then return YES; else return NO;,其中eBOOL值表达式,通常写return e会更好。

HTH