私のアプリでは、ユーザーは無制限の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以降の情報は記録されません。作成されるフィールドの数に応じてオブジェクトの数を変更するにはどうすればよいですか?
質問に答えます:はい、配列内のオブジェクトの数を変更する方法があります。最初のステップは、NSMutableArrayの仕様を読み込むことです。それでは、あなたが問題を説明し、 'object1、object2 ...'をどこから得るのかを理解する必要があります。 –
ユーザーはテキストフィールドを無制限に作成できますが、コードでは5つのオブジェクトしか扱えないとします。これは悪いです、あなたは別のデザインを使用する必要があります。アレイに関する限り、NSMutableArrayのドキュメントを読んでください。 – thundersteele