2017-07-22 6 views
0
#import <SharkORM.h> 

@class DLRSSGroup; 
@class DLUser; 


@interface DLRSS : SRKObject 

@property NSString *r_id; 

//RSS的名称 
@property NSString *r_name; 

//RSS的描述 
@property NSString *r_discrip; 

//RSS的图标 
@property NSString *r_iconUrl; 

//RSS的订阅链接 
@property NSString *r_feedUrl; 

//RSS的访问链接 
@property NSString *r_linkUrl; 

//RSS的开关 
@property BOOL r_open; 

//外键,DLRSSGroup的id 
@property DLRSSGroup *rg_id_fk; 

//外键,RSS的作者id 
@property DLUser *u_id_fk; 


@end 

Evertimeサーバーからアイテムを取得すると、同じアイテムがdataTableに挿入されるため、データテーブルには同じアイテムが多数あります。 r_idまたはr_nameをユニークにするにはどうすればいいですか?Myモデルをユニークにするにはどうすればよいですか?

答えて

0

SRKObjectのユニークキーはIdカラムなので、最初はクエリでのみ可能です。オブジェクトが存在しない場合は取得し、新しいオブジェクトを作成します。

例:

SRKObject* myObject = [[[[[DLRSS query] whereWithFormat:@"r_id = %@", r_idValue] limit:1] fetch] firstObject]; 
if (!myObject) { 
    myObject = [DLRSS new]; 
} 

それとも、あなたはどこにでもこれをやって空想しない場合は、オブジェクト自体にそれを置きます。

- (BOOL)entityWillInsert { 
    // count operations are very fast here 
    if ([[[[DLRSS query] whereWithFormat:@"r_id = %@", self.r_id] limit:1] count]) { 
     // setting the Id column to an existing one will cause areplace when `INSERT OR REPLACE INTO DLRSS` is triggered. 
     self.Id = [[[[[DLRSS query] whereWithFormat:@"r_id = %@", self.r_id] limit:1] distinct:@"Id"] objectAtIndex:0]; 
    } 
} 
+0

'#importを "DLRSS.h" @implementation DLRSS @dynamic R_ID、r_name、r_discrip、r_iconUrl、r_feedUrl、r_linkUrl、r_open。 //外键 @dynamic rg_id_fk、u_id_fk; +(NSArray *)uniquePropertiesForClass { return @ [@ "r_id"]; } @ end'このように書くことができますか?@Adrian_H –

+0

これは基本的にネットワークソースからのマージでは不十分な書き込みには失敗します。 –

+0

私はあなたが言うようにメソッドを使用します。データは繰り返されませんが、今は同じIDを使用するデータを更新できません。助けて!@Adrian_H –

関連する問題