2

KVCまでオブジェクトのプロパティにアクセスしていました。

私のオブジェクトには、次のようなメソッドがあります。

-(Address *)mainAddress {
    if (self.addresses != nil) {
        return [self.addresses anyObject]; //stub method
    }
    else {
        return nil;
    }
}

このメソッドをKVC使用して使用できます

mystring = [cliente valueForKeyPath:@"mainAddress.city"];

しかし、私はNSFetchRequestController(このコードはMagicalRecordを使用して)を作成するために使用することはできません

NSFetchedResultsController *acontroller = [Customer fetchAllSortedBy:@"mainAddress.city" ascending:ascending withPredicate:companyPredicate groupBy:nil delegate:self];

これはエラーです:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath mainAddress.city not found in entity <NSSQLEntity Customer id=4>'
4

1 に答える 1

1

NSFetchedResultsController で並べ替えを使用するには、mainAddress keyPath がエンティティの属性である必要があります。NSFRC は、メモリ内の KVC を使用せずに、基になるデータ ストアを使用してデータを並べ替えます。要点の答え: mainAddress をデータ モデル内のエンティティのフィールドにします。

于 2013-01-13T00:40:31.170 に答える