Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSMutableDictionary setValue:forKey有时失败_Ios_Objective C_Nsdictionary_Theos_Cydia Substrate - Fatal编程技术网

Ios NSMutableDictionary setValue:forKey有时失败

Ios NSMutableDictionary setValue:forKey有时失败,ios,objective-c,nsdictionary,theos,cydia-substrate,Ios,Objective C,Nsdictionary,Theos,Cydia Substrate,我使用NSMutableDictionary来保存3个键/值对。该值以NSNumber的形式表示为布尔值。 然后,我有一个加载数据的表视图,如果按下单元格,值将从“是”更改为“否”,反之亦然 除了字典中的最后一个键/值对之外,当按下单元格时,值似乎已正确更改 NSMutableDictionary *modsDict; NSString *test = @"test"; NSString *test1 = @"test1"; NSString *test2 = @"test2"; - (voi

我使用NSMutableDictionary来保存3个键/值对。该值以NSNumber的形式表示为布尔值。 然后,我有一个加载数据的表视图,如果按下单元格,值将从“是”更改为“否”,反之亦然

除了字典中的最后一个键/值对之外,当按下单元格时,值似乎已正确更改

NSMutableDictionary *modsDict;
NSString *test = @"test";
NSString *test1 = @"test1";
NSString *test2 = @"test2";

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    NSString *key = [NSString stringWithFormat: @"%@", [[modsDict allKeys] objectAtIndex: indexPath.row]];

    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        //enable
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [modsDict setValue: [NSNumber numberWithBool: 1] forKey: key];
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [modsDict setValue: [NSNumber numberWithBool: 0] forKey: key];
    }

}

-(void)viewDidLoad {

    %orig;

    modsDict = [[NSMutableDictionary alloc] init];
    [modsDict setObject: [NSNumber numberWithBool: 0] forKey:test];
    [modsDict setObject: [NSNumber numberWithBool: 0] forKey:test1];
    [modsDict setObject: [NSNumber numberWithBool: 0] forKey:test2];

    ... //init tableview

}

-(void)someMethodThatIHookTo {
    NSNumber *val = [modsDict objectForKey: test2];
    if ([val boolValue] == YES) {
        //do something
    }
    //this works for test and test1, but for test2 it crashed

   bool lol = [[modsDict objectForKey: test2] boolValue];
   if (lol) {
       //so something 
   }
   else {

   }
   //else is always called

   if ([[modsDict objectForKey: test2] boolValue]) {
   }
   else { }
   //if statement always true, never goes to else
}
以下是我试图从NSDictionary中获取价值的三种方法
我正在执行[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回“是”

不管我按了多少次电池, 三种方法的结果是相同的

我怎样才能解决这个问题


请注意,我在THEOS,Mobilesubrate上使用这个作为一个调整。

我认为您可能需要更仔细地阅读文档

以下是
allKeys
的文档说明:

讨论
未定义数组中元素的顺序

考虑到这一点,您认为代码中的以下片段将产生什么结果

[[modsDict allKeys] objectAtIndex: indexPath.row]
这可能就是你发明迷信的原因,比如:


我正在执行[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回“是”

记录在案:

  • 只使用
    @YES
    @NO
    是惯用用法
  • [NSNumber numberWithBool:0]
    [NSNumber numberWithBool:NO]
    将返回不仅具有相同值的数字,而且由于与
    NSNumber
    布尔值相关的特殊情况,将返回具有完全相同标识的数字。对于
    /非零,同上

代码的修复方法是停止对未定义顺序的事物的顺序进行假设。可能只是使用数组,因为不清楚为什么要使用字典。

我认为您可能需要更仔细地阅读文档

以下是
allKeys
的文档说明:

讨论
未定义数组中元素的顺序

考虑到这一点,您认为代码中的以下片段将产生什么结果

[[modsDict allKeys] objectAtIndex: indexPath.row]
这可能就是你发明迷信的原因,比如:


我正在执行[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回“是”

记录在案:

  • 只使用
    @YES
    @NO
    是惯用用法
  • [NSNumber numberWithBool:0]
    [NSNumber numberWithBool:NO]
    将返回不仅具有相同值的数字,而且由于与
    NSNumber
    布尔值相关的特殊情况,将返回具有完全相同标识的数字。对于
    /非零,同上

代码的修复方法是停止对未定义顺序的事物的顺序进行假设。可能只是使用数组,因为不清楚为什么要使用字典。

我认为您可能需要更仔细地阅读文档

以下是
allKeys
的文档说明:

讨论
未定义数组中元素的顺序

考虑到这一点,您认为代码中的以下片段将产生什么结果

[[modsDict allKeys] objectAtIndex: indexPath.row]
这可能就是你发明迷信的原因,比如:


我正在执行[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回“是”

记录在案:

  • 只使用
    @YES
    @NO
    是惯用用法
  • [NSNumber numberWithBool:0]
    [NSNumber numberWithBool:NO]
    将返回不仅具有相同值的数字,而且由于与
    NSNumber
    布尔值相关的特殊情况,将返回具有完全相同标识的数字。对于
    /非零,同上

代码的修复方法是停止对未定义顺序的事物的顺序进行假设。可能只是使用数组,因为不清楚为什么要使用字典。

我认为您可能需要更仔细地阅读文档

以下是
allKeys
的文档说明:

讨论
未定义数组中元素的顺序

考虑到这一点,您认为代码中的以下片段将产生什么结果

[[modsDict allKeys] objectAtIndex: indexPath.row]
这可能就是你发明迷信的原因,比如:


我正在执行[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回“是”

记录在案:

  • 只使用
    @YES
    @NO
    是惯用用法
  • [NSNumber numberWithBool:0]
    [NSNumber numberWithBool:NO]
    将返回不仅具有相同值的数字,而且由于与
    NSNumber
    布尔值相关的特殊情况,将返回具有完全相同标识的数字。对于
    /非零,同上

代码的修复方法是停止对未定义顺序的事物的顺序进行假设。可能只是使用一个数组,因为不清楚您为什么要使用字典。

您看到了什么错误?“我正在使用[NSNumber numberWithBool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回为“是”。-假设您对Objective-C比较陌生,是否安全?事实并非如此。你现在对iOS编程不太熟悉,我建议你现在不要进入越狱开发。首先理清你的基本知识。@Tommy我无法得到错误,我手机上的日志没有显示任何错误。你看到了什么错误?“我正在做[NSNumber Withbool:0/1],因为如果我使用“否/是”,即使使用“否”,它也会返回为“是”。-假设你是Obj的新手,安全吗