さて、テーブルビューに移動するときに、サイドにアクセサリの目盛りを配置できるように、NSArray
値から indexPath 値を作成しようとしています。NSDictionary
私はこのように見えるNSArray
のを持っていますNSDictionaries
{
HAS = 1;
ISL = 1;
ISV = 0;
MAN = BANKING;
MON = 324;
}
したがって、配列には、それぞれ異なる値を持つ約 80 個のエントリが含まれます。
IndexPath を作成するには、MAN == selected Stringになるまで、 MANの一意の最初の文字の数を数える必要があります。これにより、セクション番号が得られます。
次に、選択した行のセクション タイプに含まれるエントリの数をカウントする必要があります。
ここからすでにいくつかの助けがありましたが、ロジックの欠陥を特定できませんでした..選択したセクションの開始からではなく、すべての全体をカウントしていた行については、行数が完全に詰まっていました. 以下は、私が達成しようとしていることの例です。
a, aa, b, c, d, dd, ddd, dddd, e, f, g, gg
ユーザーが ddd を選択すると、インデックスパスは次のようになります。
セクション
a, b, c, (d), e, f, g = 3
行
d, dd, (ddd), dddd = 2
私はそのようにセクションをうまく取得できます
NSArray *MANArray = [sortedArray valueForKey:@"MAN"];
NSMutableArray *letters = [NSMutableArray array];
NSString *currentLetter = nil;
for (NSString *string in MANArray) {
if (string.length > 0) {
NSString *letter = [string substringToIndex:1];
if (![letter isEqualToString:currentLetter]) {
[letters addObject:letter];
currentLetter = letter;
}
}
}
NSArray *firstLetterArray = [NSArray arrayWithArray:letters];
int sectionCount = 0;
for(int i=0; i<[firstLetterArray count]; i++){
if( [[firstLetterArray objectAtIndex:i] isEqualToString:completedStringLetter]){
sectionCount = i;
NSLog(@"%d", sectionCount);
}
}
しかし、選択したセクションから行数を取得しようとすると、行き詰まります。
どんな助けでも大歓迎です。
アップデート:
これは、選択した値までカウントするために行ったことですが、最初の文字に応じてセクションから開始する必要があるため、正しくないと言いました。
NSNumber * myNumber = [NSNumber numberWithInteger:[modIdString integerValue]];
//
NSArray *subarray = [sortedArray valueForKey:@"MOD"];
for(int i=0; i<[subarray count]; i++){
if( [[subarray objectAtIndex:i] isEqualToNumber:myNumber]){
//you have found it, do whatever you need, and break from the loop
modelResultIndexPath = nil;
modelResultIndexPath = [NSIndexPath indexPathForRow:sectionCount inSection:i];
}
}