2016-03-28 1 views
0

wenn min. Wert der Eigenschaft sagen "X" gleich 1. Als für ein Szenario geht der Wert auf 0, wie wird sich das Modell verhalten? Wurffehler/Warnung? Mein Szenario ist, dass ich die Anzahl der Nachrichten in einem Etikett anzeigen möchte, aber wenn keine Nachrichten vorhanden sind, wird Null angezeigt. Anstelle von Code möchte ich nur xcmodel ausprobieren (wenn möglich), d. H. Wenn die Anzahl weniger als min. Wert dieser Eigenschaft dann Label sollte ausblenden. Es verbirgt sich, wenn Null zum ersten Mal ausgeführt wird. ABER einige Übergangsbewegungen von Ansichtscontrollern, die zur Aktualisierung dieser Zählmarke führen, führen dazu, dass Null angezeigt wird.Was bedeutet der minimale Wert einer Eigenschaft von xcdatamodel in iOS?

Antwort

0

Ich habe ein Spiel, das hergestellt und verwendet diese Punktzahl zu halten:

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

Sie eine if-Anweisung in sie könnte das Etikett zu verstecken:

Label.text = Score 
If score < min { 
Label.hidden = true 
}else{ 
Label.hidden = false 
} 
0

Core Data lassen nicht Sie speichern den Kontext, wenn der Wert außerhalb der Grenzen liegt, die Sie beim Modellieren der Daten festgelegt haben.

Entitätsname ist SomeEntity. Es hat ein Attribut count (von Integer 16 Typ), das auf Minimum = 0 festgelegt ist.

Hier wird die snipped wo das neue Objekt:

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); 
      } 

Hier ist die Debug-Beschreibung error Objekt ist:

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} 
0

Vom Core Data Programming Guide:

Die Validierung Einschränkungen angewendet werden von Core Data nur während eines Speichern Betrieb oder auf Anfrage (Können Sie die Validierungsmethoden aufrufen jederzeit direkt es sinnvoll für Ihre Anwendung Fluss macht)

So ist es möglich, ein Attribut von NSManagedObject auf einen Wert einzustellen, weniger als die angegebene Mindest, aber es wird ein case NSError während NSManagedObjectContext speichern.

Für Ihr genaues Szenario ist es schwierig, Ihnen einen Ratschlag zu geben, ohne Ihr Datenmodell und Ihren Code durchzusehen. Ich würde Ihnen wahrscheinlich empfehlen, Ihre View-Controller-Übergänge zu debuggen und Updates anzuzeigen (da Sie sagen, dass eine bestimmte Übergangssequenz dazu führt, dass sich die Ansicht nicht korrekt verhält).

Verwandte Themen