您好我在我的应用程序中使用核心数据,并希望在每个实体中将ID属性设置为自动增量。核心数据是否可能?或者我必须手动插入条目并以编程方式管理增量?
答案 0 :(得分:38)
如果您正在考虑主键的ID,则核心数据会为您处理此问题。在每个对象上都有一个objectID
属性,您可以访问该属性以查看它。从托管对象上下文创建对象时,核心数据会分配临时ID。从托管对象上下文提交更改时,核心数据会分配一个永久ID。我不认为手动尝试设置它是个好主意。
阅读this stackoverflow thread了解详情。
答案 1 :(得分:1)
我使用NSFetchedResultsController
:
首先排序:
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: false)]
然后在添加对象方法:
// Minimum id value
var recordID = 1
if let lastRecordID = fetchedResultsController.fetchedObjects?.first?.id {
recordID = Int(lastRecordID) + 1
}
let newRecord = Record(context: persistentContainer.viewContext)
newRecord.id = Int32(recordID)
答案 2 :(得分:-1)
你可以这样做 之后
<div id="container">
<div id="form">
<form action="#" class="entypo-search active">
<fieldset>
<input id="search" placeholder="Search" />
</fieldset>
</form>
</div>
</div>
目标-C:
saveContext()
夫特:
- (int)getAutoIncrement {
int number = 0;
NSURL *url = [[self objectID] URIRepresentation];
NSString *urlString = url.absoluteString
NSString *pN = [[urlString componentsSeparatedByString:@"/"] lastObject];
if ([pN containsString:"p"]){
NSString *stringPart = [pN stringByReplacingOccurrencesOfString:@"p" withString:@""]
number = stringPart.intValue
}
url = nil;
urlString = nil;
pN = nil;
stringPart = nil;
return number;
}