2016-08-09 10 views
0

Ich habe zwei Stück Code, zuerst schlägt der zweite funktioniert ... kann nicht sehen, warum.UIColor-Konvertierung in Zeichenfolge schlägt fehl, warum?

UIColor _color = [UIColor blackColor]; 

NSString * something1 = [[_color CIColor] stringRepresentation]; // Fails NSString * etwas = [[CIColor colorWithCGColor: [_ color CGColor]] stringRepresentation]; // funktioniert

Kann mir jemand erklären?

+0

Was meinen Sie mit "Fails" und "Works"? Bitte zeigen Sie das Ergebnis. – Droppy

Antwort

0

Von Apple UIColor Dokumentation here, ist dies, weil die CIColor Eigenschaft:

eine Ausnahme, wenn das Farbobjekt wirft nicht mit einer Core Image Farbe initialisiert wurde.

In diesem Fall wird _color nicht mit einer Core Image-Farbe initialisiert. Sie können sehen, dass dies der Fall ist, weil auch nur einen Fehler auslöst.

Ihr anderer Fall funktioniert, weil Sie einen ganz neuen CIColor mit einer CGColor-Eigenschaft von _color initialisieren, die von der Dokumentation immer zu einem CGColor aufgelöst wird. Im anderen Fall wird der CIColor erfolgreich erstellt und Sie können stringRepresentation darauf aufrufen.

+0

_color ist auf [UIColor blackColor] gesetzt, Sie wollen sagen, das ist nicht genug und ich muss auch die CIColor-Eigenschaft initialisieren? – unmircea

+0

Nein, die Eigenschaft ist schreibgeschützt, Sie können sie nicht initialisieren. Die Dokumentation besagt, dass _UIColor_ _object_ mit einer Core Image-Farbe initialisiert werden muss. Das bedeutet, dass Sie '_color' auf' [UIColor colorWithCIColor: Some_CIColor] '' setzen sollten, oder, in Ihrem anderen Fall, funktioniert 'CGColor' ebenfalls. – Carter

+0

Wenn ich also _color = [UIColor blackColor] initialisiere, reicht es nicht aus, die CIColor-Eigenschaft verwenden zu können? – unmircea