2012-05-05 16 views
-4

私のアプリでは、ユーザーは無制限のUITextFieldを作成できます。その後、私はそれらのすべての情報を取得し、JSONファイルでアップロードします。配列内のオブジェクト数を変更する

NSString *object; 
NSString *object2; 
NSString *object3; 
NSString *object4; 
NSString *object5; 
NSString *size; 

for (UITextField *text in array2) { 


int touchedtag = text.tag; 

NSUInteger tagCount = touchedtag; 
switch (tagCount) { 
    case 1: 

     object = [NSString stringWithFormat:@"%@ %@ %@", text.text, NSStringFromCGRect(text.frame), text.font]; 

     break; 
    case 2: 
     object2 = [NSString stringWithFormat:@"%@ %@ %@", text.text, NSStringFromCGRect(text.frame), text.font]; 

     break; 
    case 3: 

     object3 = [NSString stringWithFormat:@"%@ %@ %@", text.text, NSStringFromCGRect(text.frame), text.font]; 

     break; 
    case 4: 

     object4 = [NSString stringWithFormat:@"%@ %@ %@", text.text, NSStringFromCGRect(text.frame), text.font]; 

     break; 

    case 5: 

     object5 = [NSString stringWithFormat:@"%@ %@ %@", text.text, NSStringFromCGRect(text.frame), text.font]; 

     break; 

    default : 

     break; 

} 
} 
    NSArray *keys = [NSArray arrayWithObjects:@"text", @"text2", @"text3", @"text4", @"text5", nil]; 
    NSArray *objects = [NSArray arrayWithObjects:object,object2,object3, object4, object5, nil]; 


NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 
NSString* jsonString = [jsonDictionary JSONRepresentation]; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

[jsonData writeToFile:path atomically:YES]; 

NSString *destDir = @"/sandbox/"; 
[[self restClient] uploadFile:filename toPath:destDir 
       withParentRev:nil fromPath:path]; 

[[self restClient] loadMetadata:@"/sandbox/"]; 

} 

問題は、オブジェクトの数が独立していないということです(オブジェクト、オブジェクト2 ...)。ユーザーが5つ未満のテキストフィールドを作成するとアプリがクラッシュしますが、5つ以上は何も起こりませんが、タグ6以降の情報は記録されません。作成されるフィールドの数に応じてオブジェクトの数を変更するにはどうすればよいですか?

+2

質問に答えます:はい、配列内のオブジェクトの数を変更する方法があります。最初のステップは、NSMutableArrayの仕様を読み込むことです。それでは、あなたが問題を説明し、 'object1、object2 ...'をどこから得るのかを理解する必要があります。 –

+1

ユーザーはテキストフィールドを無制限に作成できますが、コードでは5つのオブジェクトしか扱えないとします。これは悪いです、あなたは別のデザインを使用する必要があります。アレイに関する限り、NSMutableArrayのドキュメントを読んでください。 – thundersteele

答えて

0

はNSMutableArrayのを使用する方法を学ぶ:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html

それはちょうど他の多くの言語でVectorを使用してのように、あなたは「その場で」オブジェクトを追加したり削除することができます。 (Java(登録商標)、ActionScriptの、C++ ...)

例: (someValueのは、以前に宣言された変数である)

stuff = [[NSMutableArray alloc] initWithCapacity: someValue]; 
[stuff insertObject:object1 atIndex:0]; 
[stuff insertObject:object2 atIndex:1]; 
[stuff insertObject:object2 atIndex:2]; 

...

このコードは、特定のでそれを初期化することですあなたが探しているものと思われるオブジェクトの数。 NSMutableArrayでは、後で配列内のオブジェクトの数を調整することもできます。

+0

いいえ、特定の番号は必要ありません。フィールド数に応じた番号が必要です – Alessandro

+0

変数にフィールド数がある場合は、そのフィールドを 'initWithCapacity'に使用できます。 –

関連する問題