CoreData、2つ以上の乗算属性の合計 -- sql フィールド と objective-c フィールド と core-data フィールド 関連 問題

SQL to CoreData, sum of two or more multiplied attributes












2
vote

問題

日本語

SQLをどのように翻訳するか:

<事前> <コード> select sum( field1 * field2 ) from table where field3 = 8

同等のCoreData NSPredicate Codeを参照してください。すべてを取得せずにループの場合は醜いものを実行せずに可能ですか?

英語

How do I translate SQL:

select sum( field1 * field2 ) from table where field3 = 8 

to equivalent CoreData NSPredicate code, please? Is it possible without fetching everything and running an ugly for loop?

</div
        
     
     

回答リスト

2
 
vote

SQLで実行する必要があるのはなぜですか?

snapshotViewAfterScreenUpdates3 サブクラスを使用している場合は、その計算を実行する仮想プロパティを作成できます。 (命名を無視してください。ドメインがわかりません)

myclass.h

<事前> <コード> snapshotViewAfterScreenUpdates4

myclass.m

<事前> <コード> snapshotViewAfterScreenUpdates5
 

Why does it need to be performed in the SQL?

If you are using an NSManagedObject sub class then you can just create a virtual property that will do that calculation. (Ignore the naming I do not know you domain)

MyClass.h

@property (nonatomic, readonly) CGFloat sumOfField1AndField2; 

MyClass.m

- (CGFloat)sumOfField1AndField2; {    return self.field1 * self.field2; } 
</div
 
 
       
       
1
 
vote

あなたのエンティティは、2つのフィールドに乗算する計算プロパティの fetchedプロパティを持つべきです。クエリの解決策は、 snapshotViewAfterScreenUpdates6 とkey-value-coding:

を組み合わせることです。 <事前> <コード> snapshotViewAfterScreenUpdates7

指摘したように、それは実際にはフェッチされたプロパティではなく計算されたフィールドです。私はこれらの線に沿ってテストをしました:

<事前> <コード> snapshotViewAfterScreenUpdates8

とこれは作業しました:

<事前> <コード> snapshotViewAfterScreenUpdates9
 

Your entity should have a fetched property calculated property that multiplies the two fields. The solution to your query is to combine NSPredicate and key-value-coding:

fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"table"]; fetchRequest.predicate = [NSPredicate predicateWithFormat:@"field3 = %@", @8]; NSArray *results = [self.managedObjectContext         executeFetchRequest:fetchRequest error:nil];   NSNumber *sum = [results valueForKeyPath:@"@sum.fetchedProperty"];  

As you pointed out, it is really not a fetched property but a calculated field. I made a test along these lines:

// NSManagedObjectSubclass .h @property (nonatomic, strong) NSNumber *product;  // .m @dynamic product;  -(NSNumber *)product {     return @(value1.floatValue * value2.floatValue);  } 

and this worked:

NSLog(@"Sum of products: %@", [fetchedObjects valueForKeyPath:@"@sum.product"];  
</div
 
 
       
       

関連する質問

0  コアデータ - 期待どおりに機能しないエンティティ関係  ( Core data entity relationships not working as expected ) 
私はXcodeでデータモデルを設定しました Entitya atta1. atta2 EntityB ATTB1 attb2. ATTB3 その後、関係を設定します Entitya 名前:RLPTOENTITYB 宛先:ENTITY...

0  NStreeControllerのオブジェクトをすべて取得します  ( Retrieving all of an nstreecontrollers objects ) 
バックグラウンド情報のビットであるため、コアデータでNSOUTLINEVIELを使用しています。 これが私がしようとしていることです: アウトラインビューツリーコントローラからすべてのオブジェクトを取得します。 これらの各オブジェクトから「名前」プロパ...

0  管理対象クラス生成ダイアログの「検証メソッドの生成」チェックボックスは何ですか?  ( What does the generate validation methods checkbox in the managed object class ) 
管理対象クラス生成ダイアログの「検証方法の生成」チェックボックスは何ですか? ...

0  Swift 3 Tableview.ReloadDataアプリをクラッシュさせる  ( Swift 3 tableview reloaddata crashes the app ) 
コアデータからデータを取得するテーブルビューを持っています。 これはうまく機能しますが、TBL.ReloadDataコマンドを送信した場合、私のアプリはクラッシュします。 これはデータを取得してリロードするための私のコードです: <事前> <コード> @IBO...

0  DidSelectrowat IndexPathで正しいエンティティを選択する方法  ( How to select the correct entity in didselectrowat indexpath ) 
My tableview は、 name 属性によってソートされています。だから私が "Hanna"という名前を入力したら、 tableview は次のようになります。 ベル Hanna しかし私が1つのセルを選択すると、私が入力した順序のた...

6  iPhoneコアデータ:変換可能な属性はデータのみに変換する必要がありますか?  ( Iphone core data do transformable attributes have to transform to only data ) 
コアデータで変換可能な属性を使用して、画像や色のような複雑なオブジェクトを生データに変換しています。 この ... 変換可能な考え方 属性は、ANにアクセスすることです 非標準タイプとしての属性です シーンの背後にあるコアデータはANを使用しま...

1  Xcodeを使用して設計されたコアデータモデルで定義されたMINと最大値にプログラム的にアクセスする方法  ( How to programaticly access min and max values defined in a core data model desi ) 
nsattributedEscriptionクラスでは、デフォルト値のみが見つかることを期待していました。 現場の後ろに、検証準拠を作成しましたが、を使って到達しようとしていました <事前> <コード> NSDictionary* dico= [[...

0  NSDictionary経由で、iPhone間でCoreDataデータを転送するためのGameKitを使用する  ( Using gamekit to transfer coredata data between iphones via nsdictionary ) 
私は2つのiPhoneの間で、コアデータを介して管理された情報を交換したいアプリケーションを持っています。 最初にコアデータオブジェクトをNSDictionaryに回します(転送されるNSDATAに変わるものは非常に単純なもの)。 My CoreDataには...

0  CoreData自動保存し、自動保存後のすべてのデータをロードしていません  ( Coredata autosaving and not loading all data after autosave ) 
私のデータのためのNSManagedObjectサブクラスを使用してNSPersistentDocumentサブクラスを持っています。 新しい文書が開かれると、データ構造の初期化(些細なフィールドの些細な量)を初期化します。私が気づいたことは、無題の文書が自動...

2  エンティティBのすべてのインスタンスの合計を実験aの所与のインスタンスから和らげる  ( Getting the sum of all instances of entity b from a given instance of entity a ) 
エンティティAとエンティティB(IOSコアデータアプリ)との間には多数の関係があります。エンティティAの特定のインスタンスからのすべてのインスタンスのNSDecimalNumber属性の合計を取得する必要があります.A。 ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有