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

每次我从服务器获取项目时,相同的项目将插入到数据表中,因此数据表中有许多相同的项目。如何使 r_id 或 r_name 唯一???

4

1 回答 1

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];
   }
}
于 2017-07-22T20:35:12.747 回答