1

同じ数を100回配列に格納したい。これらの数値は後で変更されますが、カウンターを使用してifステートメントを記述し、最初に100個のスロットすべてに値0を入力します。これを行う簡単な方法はありますか?

'block01'を'block02'、'block03'などに変更する必要があるこのようなもの:

int block01 = 0;

NSMutableDictionary* myDict = [[NSMutableDictionary alloc] init];

if(myDict)
{
    [myDict setObject:block01 forKey:@"block01stored"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [paths objectAtIndex:0];
    NSString *path = [documentPath stringByAppendingPathComponent:@"blocks.save"];

    BOOL successfulWrite = [myDict writeToFile: path atomically: YES];
    if(successfulWrite == NO)
}
4

2 に答える 2

0

NSNumber(オブジェクトですがintはそうではありません)を作成し、それをNSMutableDictionaryに格納できます。

NSNumber* num = [NSNumber numberWithInt:0];

for (int i = 1; i<=100; i++) {
   [myDict setObject:num forKey:[NSString stringWithFormat:@"block%dstored",i]];
}
于 2012-11-27T14:34:21.590 に答える
0

これはあなたを助けるはずです。これは99回(1〜100)実行されるループであり、現在の数値を含むようにフォーマットされたキーのオブジェクトとしてゼロを追加します。

NSMutableDictionary* myDict = [[NSMutableDictionary alloc] init];
for (int i = 1; i <= 100; i ++) {
    if(myDict)
    {
        [myDict setObject:[NSNumber numberWithInt:0] forKey:[NSString stringWithFormat:@"block%.3istored",i]];
    }
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [paths objectAtIndex:0];
NSString *path = [documentPath stringByAppendingPathComponent:@"blocks.save"];
BOOL successfulWrite = [myDict writeToFile: path atomically: YES];
if(successfulWrite == NO)

編集:特定のキーの値を取得するには、次を使用できます。

int myInt = [[myDict objectForKey:@"block050stored"] intValue];

また、オブジェクトを特定のキーに置き換えたい場合は、次のように簡単にできます。

[myDict setObject:[NSNumber numberWithInt:1] forKey:@"block020stored"];

ここで、%.3iは文字列に、常に3桁の長さになるようにフォーマットされた数値(i)を追加するように指示します。(000、001、010、099、100)

[NSString stringWithFormat:@"block%.3istored",i]

したがって、上記の行は基本的に、「block」と「stored」という単語を含む文字列を作成し、その間にint「i」の現在の値を3桁で表したものを作成することを意味します。

于 2012-11-27T14:45:57.420 に答える