2014-06-10 9 views
8

Próbuję przekonwertować kod działający w Objective-C na Swift. Problem, na który napotykam, polega na tym, że requireDisplayForKey/actionForKey nie są wywoływane w ten sam sposób. O ile mogę powiedzieć, wartości klucza niestandardowego nie są poprawnie przekazywane. Oto co mam kiedy debugować go:czy moduły needsDisplayForKey/actionForKey działają poprawnie?

wartość domyślna:

(String!) event = { 
    core = { 
    _baseAddress = Builtin.RawPointer = 0x00feee51 "onOrderIn" 
    _countAndFlags = 1073741833 
    _owner = Some { 
     Some = (instance_type = Builtin.RawPointer = 0x01026348 @"onOrderIn") 
    } 
    } 
} 

wartość niestandardowy (pusty ciąg przekazany):

(String!) event = { 
    core = { 
    _baseAddress = Builtin.RawPointer = 0x0b418f79 
    _countAndFlags = 1073741833 
    _owner = Some { 
     Some = (instance_type = Builtin.RawPointer = 0x0b418f70 -> 0x006e38f0 (void *)0x006e38c8: __NSCFString) 
    } 
    } 
} 

Nie jestem pewien, co odpowiedni kod może być. Po prostu zapytam - czy ktokolwiek inny był w stanie zdefiniować niestandardową niejawną animację w Swift? Czy jest coś, o czym muszę pamiętać przy przejściu z Celu C?

override class func needsDisplayForKey(key: String!) -> Bool{ 
    if key == "angleFrom" || key == "angleTo" { 
     return true; 
    } 
    return super.needsDisplayForKey(key) 
} 

override func actionForKey(event: String!) -> CAAction!{ 
    if event == "angleFrom" || event == "angleTo" { 
     return self.makeAnimationForKey(event) 
    } 
    return super.actionForKey(event) 
} 
+0

to wygląda właściwości dynamicznych nie może być pracując jeszcze w Swift, przynajmniej nie bez przeniesienia się do Celu-C http://stackoverflow.com/questions/24015185/generating-swift-models-from-core-data-entities – user3320597

Odpowiedz

13

mam to działa w Swift za pomocą @NSManaged atrybutu przed deklaracji zmiennej (gdzie powinieneś użyć atrybutu @dynamic w Objective-C)

+0

Dzięki, to zadziałało dla mnie. Użyłem przesłonięć zgodnie z opisem w pytaniu i ustawiłem moją właściwość niestandardową (klucz) na @NSManaged. –

+0

tak, tak jest, ponieważ '@ NSManaged' produkuje to, co Objective-C nazywa' @ dynamiczną 'właściwością, co oznacza brak implementacji, ustawianie i otrzymywanie wartości będzie obsługiwane w środowisku wykonawczym przez KVO, i to jest dokładnie ten sam typ właściwości, co potrzeby CoreGraphics , także! –

Powiązane problemy