使用NSBatchUpdateRequest将Core Data属性设置为nil

时间:2015-09-03 18:37:43

标签: ios swift core-data

是否可以使用myfolder= "C:\\Test Programs\\ \\";将属性设置为nil?将NSBatchUpdateRequest传递给NSNull()无效:

propertiesToUpdate

我没有收到任何错误,但不清楚日期。

我也尝试将其设置为let unlockRequest = NSBatchUpdateRequest(entityName: "MyEntity") unlockRequest.predicate = NSPredicate(format: "self in %@", myObjectIDs) unlockRequest.propertiesToUpdate = ["lockDate": NSNull()] var error: NSError? myContext.executeRequest(unlockRequest, error: &error) if let error = error { log.error("Failed to unlock: \(error)") } ,但这也不起作用(NSExpression(forConstantValue: NSNull())参数不接受可选值,因此我无法传递forConstantValue )。

2 个答案:

答案 0 :(得分:1)

当前API允许将nil作为常量值传递。

unlockRequest.propertiesToUpdate = ["lockDate": NSExpression(forConstantValue: nil)]

答案 1 :(得分:0)

这似乎在Objective-C中正常工作:

NSBatchUpdateRequest *batch = [[NSBatchUpdateRequest alloc] initWithEntityName:entityName];
NSExpression *value = [NSExpression expressionForConstantValue: nil];
batch.propertiesToUpdate = @{@"lockDate": value};
batch.resultType = NSUpdatedObjectsCountResultType;
NSError *error;                
NSBatchUpdateResult *results = [self.privateContext executeRequest:batch error:&error];