0

このcoredataオブジェクトのorderプロパティで最大値を見つけようとしています:

#import <Foundation/Foundation.h>
#import "Story.h"

@class Story;

@interface Sentence : NSManagedObject {

}
@property (nonatomic, retain)   NSString        *text;
@property (nonatomic, retain)   NSString        *image;
@property (nonatomic, retain)   NSString        *thumb;
@property (nonatomic, retain)   NSNumber        *order;
@property (nonatomic, retain)   Story           *belongsTo;
@end

KVCを使用します。私はAppleのドキュメントをリソースとして使用しています(サンプルコードにエラーがあるようです-欠落しています:そして@が間違った場所にありますが、おそらく何かが欠落していますか?)

そして、私が使用しようとした最新のコードは次のようになります。

NSSet *sentences = [story sentences]; //this is a valid NSSet filled with 1 or n Sentence objects
NSNumber *maxOrder = [sentences valueForKeyPath:@"max.order"];
NSLog(@"maxOrder:", maxOrder);

次のエラーが発生します。

[33209:207] *キャッチされなかった例外'NSUnknownKeyException'が原因でアプリを終了しています。理由:'[<_ PFCachedNumber 0xc4a9004> valueForUndefinedKey:]:このクラスはKeyMaxのキー値コーディングに準拠していません。

答えが明白で、要点を見逃している場合は申し訳ありませんが、私が間違っていることについての洞察をいただければ幸いです。このトピックに関するAppleのドキュメントは少し曖昧に見えます。ありがとう!

4

2 に答える 2

2

ドキュメントを読み間違えました。キーパスは。である必要があります@"@max.order"。文字列内の@に注意してください。@maxは収集演算子です。

ただし、ドキュメントに誤植があるのは正しいことです。どこを見valueForKeyPath"@count"ても、文字列の前に精神的にaを追加する必要があります。:@これにより、文字列がに変わりますvalueForKeyPath:@"@count"

于 2010-10-28T02:39:39.777 に答える
1

興味深いことに、私はそのドキュメントの例が間違っていることに気づきませんでした。セミコロンと@がありません。

必要な構文は次のとおりです。

NSNumber *maxOrder = [sentences valueForKeyPath:@"@max.order"];
于 2010-10-28T02:39:43.050 に答える