2

その行には次のような統計が表示されるため、結果の最後の 2 行を無視するにはどうすればよいですか。

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

また、以下のエラーが表示されるかどうかもわかりません: * キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

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
4

1 に答える 1

2

strings.countループが検出i % 2 == 0する回数が を検出する回数よりも多いため、奇数になるたびにこのエラーが発生しますi % 2 == 1

strings[i-1]whenは偶数インデックスを持つi先行を参照するため、ループは同一のキーと値を挿入しようとすることに注意してください。strings

これを修正する方法は次のとおりです。

for (int i = 0; i+1 < strings.count; i += 2) {
    [keys addObject:strings[i]];
    [values addObject:strings[i+1]];
}
于 2013-08-03T01:11:30.083 に答える