次の辞書があります。
NSDictionary* jsonDict = @{
@"firstName": txtFirstName.text,
@"lastName": txtLastName.text,
@"email": txtEmailAddress.text,
@"password": txtPassword.text,
@"imageUrl": imageUrl,
@"facebookId": [fbId integerValue],
};
最後の要素では、整数を使用する必要がありますが、エラーが発生します。
collection element of type int is not an Objective C object
この要素でint値を使用するにはどうすればよいですか?
でなければなりません:
@"facebookId": [NSNumber numberWithInt:[fbId intValue]];
NSDictionary
はオブジェクトでのみ機能するため、int
sまたはinteger
sまたはbool
sまたはその他primitiveデータ型。
[fbId integerValue]
はプリミティブ整数値を返します(これはオブジェクトではありません)
したがって、primitiveデータ型をカプセル化してオブジェクトにする必要があります。このため、NSNumber
のようなクラスを使用して、このがらくたを格納するだけのオブジェクトを作成する必要があります。
もっと読む: http://rypress.com/tutorials/objective-c/data-types/nsnumber.html
または、fbIDをNSString
とすると、
@"facebookId": @([fbId intValue]);
javaのオートボクシングのようなものです。 @プリミティブ番号をNSNumberオブジェクトに変換します。
fbIDがint
であるとすると、次のようになります。
@"facebookId": @(fbId)
NSDictionaryはオブジェクト(例:NSString、NSNumber、NSArrayなど)のみを保持でき、プリミティブ値(例:int、float、doubleなど)は保持できません。 Objective-Cのほとんどすべてのカプセル化についても同じことが言えます。数値を保存するには、NSNumberを使用します。
NSDictionary *dictionary = @{@"key" : [NSNumber numberWithInt:integerValue]]};
ディクショナリの非ポインターデータ型値ストアには@(%value%)を使用する必要があります。
@"facebookId": @(fbId)