konu is_Block SKNode mevcut olmamasıdır.
setValue forUndefinedKey
varsayılan olarak NSUndefinedKeyException yükseltecektir. Eğer bir alt sınıfı olsaydı
, size ne yapmak istediğinizi yapmak için bu işlevi geçersiz kılar.
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/BasicPrinciples.html daha iyi anahtar değeri kodlama anlamak bakın.
Eğer SKNode olmasını istiyorsanız
is_Block adlı özel değişkeni, sen SKNode için bir uzantısı oluşturmak ve sizin için bu verileri depolayacak bir özellik oluşturmak zorunda olacak sahiptir. oyun alanında
import Foundation
import SpriteKit
import ObjectiveC
extension SKNode{
var isBlock: Bool {
get {
var key = "isBlock";
guard let block = objc_getAssociatedObject(self, &key) as? Bool
else{
print("Error");
return false
}
print("Success");
return block
}
set(newValue) {
var key = "isBlock";
print("Setting \(newValue)")
objc_setAssociatedObject(self, &key, newValue , objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
}
}
Testi:
import Foundation
import SpriteKit
import ObjectiveC
extension SKNode{
var isBlock: Bool {
get {
var key = "isBlock";
guard let block = objc_getAssociatedObject(self, &key) as? Bool
else{
print("Error");
return false
}
print("Success");
return block
}
set(newValue) {
var key = "isBlock";
print("Setting \(newValue)")
objc_setAssociatedObject(self, &key, newValue , objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
}
}
let a = SKNode()
let b = SKNode()
a.isBlock = false
b.isBlock = true
print ("\(a.isBlock), \(b.isBlock)")
b.isBlock = false
a.isBlock = true
print ("\(b.isBlock), \(a.isBlock)")
nedir problem? –