【问题标题】:count of objects (1116) differs from count of keys (1117)对象数 (1116) 与键数 (1117) 不同
【发布时间】:2013-08-03 01:06:18
【问题描述】:

我如何忽略结果中的最后 2 行,因为该行显示如下统计信息:

---
1113 entries, 25351 bytes used, 7417 bytes free.

我也不确定我是否在下面收到此错误: * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSDictionary initWithObjects:forKeys:]:对象计数 (1116) 与键计数 (1117) 不同”

NSString *result ...
NSArray *strings = [result componentsSeparatedByCharactersInSet:
                   [NSCharacterSet characterSetWithCharactersInString:@"=\n"]];

NSMutableArray *keys = [NSMutableArray new];
NSMutableArray *values = [NSMutableArray new];

  for (int i = 0; i < strings.count; i+=1) {
            if (i % 2 == 0) { // if i is even
                [keys addObject:strings[i]];
            }
            else {
                [values addObject:strings[i-1]];

            }
        }

Sample data:
NC_AllowedWebHosts=
NC_BgeLAN=br1
NC_Doc=/tmp/dhcpd
NC_ExPts=1863
NC_Redirect=1
[...]
bt_binary_custom=/path/to/binaries/directory
bt_blocklist=0
bt_blocklist_url=http://list.g.com/?list=bt_level1
bt_check=1

【问题讨论】:

    标签: ios objective-c cocoa nsstring nsarray


    【解决方案1】:

    每当strings.count 为奇数时,您都会收到此错误,因为循环看到i % 2 == 0 的次数大于看到i % 2 == 1 的次数。

    请注意,您的循环将尝试插入相同的键和值,因为当i 为奇数时,strings[i-1] 指的是前面具有偶数索引的strings

    以下是您可以解决的方法:

    for (int i = 0; i+1 < strings.count; i += 2) {
        [keys addObject:strings[i]];
        [values addObject:strings[i+1]];
    }
    

    【讨论】:

    • 我已经更新了你提到的循环。还在那里添加了示例数据。现在,当我输出值时,前 36 个值打印正常,但之后(bt_check)“键”变为剩余条目的“值”。键是“=”之前的所有内容,值在“=\r\n”之间
    • @Squirrel 这很奇怪,如果strings 数组没问题,那么上面的循环应该可以工作。在循环中添加 NSLog(@"%@ %@", strings[i], strings[i+1]) 以在添加项目时显示项目以查看发生了什么。
    • 打印不正确。不管怎样,我可以给你发私信,这样我就可以把输入文件发给你?
    • 有时列表有这样的键/值:NC_ExPts=1863== 或 NC_Ex=12= 我认为这可能会导致问题,因为我解析如下:[NSCharacterSet characterSetWithCharactersInString:@" =\r\n"] 无论如何要排序,例如 NC_ExPts=1863== 将输出键:NC_ExPts 值:1863== 与 NC_Ex=12= 相同,将输出键:NC_Ex 值:12=
    • @Squirrel 然后你需要以不同的方式分割文件。您可能想发布一个单独的问题,其中包含文件描述以及用于拆分文件的代码。应该有人能帮助你。
    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 2021-12-22
    • 2020-06-25
    相关资源
    最近更新 更多