对象的数量(1116)与键的数量(1117)不同

时间:2013-08-03 01:06:19

标签: ios objective-c cocoa nsstring nsarray

如何忽略结果中的最后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

1 个答案:

答案 0 :(得分:2)

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

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

以下是解决问题的方法:

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