1

Web サービスから受け取った JSON から取得した配列があります。NSLOG を使用して配列の内容を表示すると、次のように表示されます。

{ ?    Category = "New Products";
    CategoryID = 104;
    SubCategories =     (
    );
}

Category と CategoryID の値を取得し、それらを管理オブジェクト "newProductCategory" に割り当てる必要があります。文字列型に対応するカテゴリ値を割り当てるのに問題はありません。カテゴリ ID を受け取るはずの int 32 型にハードコードされた数値を割り当てるのにも問題はありません。しかし、CategoryID 値を int 32 型として受け入れられるものに変換することになると、私は苦労しています。

ゼロの代わりに、その値をこのコード行で消化可能なものに変換するための適切な構文は何ですか?

[newProductCategory setValue : 0 forKey : @"productCategoryID"];

これは、参考になるかもしれない私の失敗した試みの1つです。やってみると…

        // Pull category record "i" from JSON        
        NSArray * categoryProperties = [categories objectAtIndex:i];
        NSNumber * productCategoryID = [categoryProperties valueForKey:@"CategoryID"];

...次に、productCategoryID をゼロの代わりに使用して上記の形式で割り当てようとすると、次のエラーが発生します。

'NSInvalidArgumentException'、理由: '属性の値の型を受け入れられません: プロパティ = "parentCategoryID"; 必要なタイプ = NSNumber; 指定されたタイプ = __NSCFString; 値 = 104.'

4

2 に答える 2

3

CoreData に int32 を指定しても NSNumber オブジェクトを渡すことになり、json 解析から NSString を取得しているようです (確かに NSStringFromClass([productCategoryID class]) のログを試すことができます)。あなたが試すことができます :

NSString * productCategoryID = [categoryProperties valueForKey:@"CategoryID"];
newProductCategory.productCategoryID = @([productCategoryID intValue]);
//or
newProductCategory.productCategoryID = [NSNumber numberWithInt:[productCategoryID intValue]];
于 2013-02-14T15:45:58.893 に答える
0

NSNumber を設定する必要があります。2 つの方法があります。

[newProductCategory setValue:@(0) forKey:@"productCategoryID"];

また

[newProductCategory setValue:[NSNumber numberWithInt:0] forKey:@"productCategoryID"];
于 2013-02-13T19:53:17.063 に答える