単純なNSValueTransformer
があり、コンマで区切られた文字列first, second, third
を配列に変換する必要があります。だから私のCoreDataスキーマで私はTransformed
に設定し、私の変圧器を指定する属性options
を持っています。CoreDataは配列を返すときに文字列を返します。文字列を返すときにNSDataを返します。
これは私の変圧器である:私はテストを返す場合
... 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x6cc59a0'
:私は変数result
を返すとき
-(id)transformedValue:(id)value{
// convert it to an array
if(!value){
return nil;
} else{
NSString *languages = value;
NSArray *result = [languages componentsSeparatedByString: @", "];
// return result;
return @"test Result";
}
}
は今、私は次のエラーを(それがNSString
を期待しているようlength
が見えます)を取得上記の文字列の代わりにこのエラーが発生します(bytes
はNSData
オブジェクトを予期しているようです):
... 'NSInvalidArgumentException', reason: '-[__NSCFConstantString bytes]: unrecognized selector sent to instance 0xf0780'
私は把握していないような概念上の問題があるようです。また、興味深いことに、+(Class)transformedValueClass
と+(BOOL)allowsReverseTransformation
は、デバッガを使用するとき決して「触れられません」。
しかし、 "1"から "10"までの数字を1から10の数字に変換するトランスフォーマを作成できませんでしたか?それはNSDataでなければなりませんか? – Besi
Objective-CオブジェクトだけがCoreDataに格納できることを考慮してください。したがって、NSNumber、NSDate、NSStringまたはNSData以外の数字はありません。私はあなたにアドバイスを与えることを主な目標として理解できません。しかし、エンティティにいくつかの文字列を追加するために、モデルにいくつかの追加のオブジェクトを追加し、一対多を関連させることをお勧めします。それはよりエレガントで効果的なソリューションかもしれません。 – voromax