0

如果设置最小值。属性值说“X”等于 1。在某些情况下,该值变为 0,模型将如何表现?抛出错误/警告?我的场景是我想在标签中显示消息的数量,但是当没有消息时,就会出现零。而不是代码我只想尝试通过 xcmod​​el (如果可能的话),即如果计数小于 min。该属性的值然后标签应该隐藏。如果第一次运行为零,它确实会隐藏,但是视图控制器的一些过渡运动会导致更新计数标签导致零显示。

4

3 回答 3

0

核心数据编程指南

验证约束仅在保存操作期间或根据请求由 Core Data 应用(您可以在对您的应用程序流程有意义的任何时候直接调用验证方法)

因此,可以将属性设置为NSManagedObject小于指定最小值的值,但在保存NSError期间会出现这种情况。NSManagedObjectContext

至于您的确切情况,如果不查看您的数据模型和代码,很难给您建议。我可能会建议您调试视图控制器转换和视图更新(因为您说某些特定的转换序列会导致视图行为不正确)。

于 2016-03-28T10:08:10.363 回答
0

如果值超出您在建模数据时设置的边界,Core Data 将不允许您保存上下文。

实体名称是SomeEntity。它有一个属性countInteger 16类型),设置为Minimum = 0.

这是新对象的片段:

SomeEntity *object = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([SomeEntity class])
                                                       inManagedObjectContext:context];

object.count = @(-1);

NSError *error;
BOOL success = [context save:&error];

// success == NO here

if (!success) {
                NSLog(@"ERROR saving data: %@", error.localizedDescription);
            }

这是error对象调试说明:

Printing description of error:
Error Domain=NSCocoaErrorDomain Code=1620 "The operation couldn’t be completed. (Cocoa error 1620.)" UserInfo={NSValidationErrorObject=<SomeEntity: 0x7876eed0> (entity: SomeEntity; id: 0x7876d970 <x-coredata:///SomeEntity/tEAD37BAD-81E7-47AE-A182-E35D9BCC69DB2> ; data: {
    count = "-1";
    someUUID = "CD69E59E-B8AD-4615-8257-1F1BD6632B3E";
}), NSValidationErrorKey=count, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1620.), NSValidationErrorValue=-1}
于 2016-03-28T10:07:57.463 回答
0

我做了一个游戏并用它来记分:

var Score: Int = 0 {
    didSet {
        ScoreLabel.text = "Score: \(Score)"
    }
}

您可以在其中添加一个 if 语句来隐藏标签:

Label.text = Score
If score < min {
Label.hidden = true
}else{
Label.hidden = false
}
于 2016-03-28T10:01:11.970 回答