4

CoreDataを使用してiOSアプリケーションを開発しています。

私はこれらの2つのエンティティを持っています:

ここに画像の説明を入力してください

カテゴリー

ここに画像の説明を入力してください

エンティティからアクセスしようとしていますが、エラーが発生しcategory.nameます:Shop

- (void)updateDetails:(NSManagedObject *)shop
{
    NSLog(@"updateDetails: %@", shop);

    if (shop == nil)
        return;

    self.nameLabel.text =      [[shop valueForKey:@"name"] description];
    self.categoryLabel.text =  [[shop valueForKey:@"category.name"] description];
    self.addressLabel.text =   [[shop valueForKey:@"address"] description];
    self.telephoneLabel.text = [[shop valueForKey:@"telephone"] description];
    
    NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber* acceptRate = [f numberFromString:[[shop valueForKey:@"acceptRate"] description]];
    
    _ratingControl.rating = [acceptRate unsignedIntValue];
}

Shop次の方法でエンティティを取得します。

NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Shop"
                                          inManagedObjectContext:context];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];

NSArray *results = [context executeFetchRequest:fetchRequest error:nil];

しかし、私はこのエラーを受け取ります:

'[<NSManagedObject 0x1cdb4890> valueForUndefinedKey:]: the entity Shop is not key value coding-compliant for the key "category.name".'

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

7

self.categoryLabel.text = [[shop valueForKey:@"category.name"] description];

する必要があります

self.categoryLabel.text = [[shop valueForKeyPath:@"category.name"] description];

理由: Key Value Coding Documentationから

キーは、オブジェクトの特定のプロパティを識別する文字列です。通常、キーは受信オブジェクトのアクセサ メソッドまたはインスタンス変数の名前に対応します。キーは ASCII エンコーディングを使用する必要があり、小文字で始まり、空白を含めることはできません。

キーの例としてpayee、 、openingBalancetransactionsおよびがありamountます。

キー パスは、走査する一連のオブジェクト プロパティを指定するために使用される、ドットで区切られたキーの文字列です。シーケンス内の最初のキーのプロパティはレシーバーに関連しており、後続の各キーは前のプロパティの値に関連して評価されます。

たとえば、キー パスaddress.streetは、受信オブジェクトから住所プロパティの値を取得し、住所オブジェクトに関連する番地プロパティを決定します。

于 2013-02-07T16:47:00.400 に答える