Das Problem scheint die veränderte Methode Signatur zu sein, wie kashif vorgeschlagen . Swift scheint nicht in der Lage zu sein, die Objective-C-Methode zu überbrücken, da die Signatur nicht mehr mit den Namen der tiefgestellten Methoden übereinstimmt.
Problemumgehung 1
Sie können direkt durch den Aufruf der Index-Methode ohne Änderung der Rahmen dieses Problem umgehen, anstatt die []
Betreiber:
Anstelle der Anweisung unten, um den Wert bekommen eines bestimmten Schlüssel:
let str = user["key-name"] as? Bool
Bitte benutzen t er folgende Anweisung:
let str = user.objectForKey("key-name") as? Bool
und
Statt der Anweisung unter der Verwendung von für den Wert eines bestimmten Schlüsseleinstellung:
user["key-name"] = "Bla bla"
Bitte verwenden Sie die folgende Anweisung:
user.setObject("Bla bla", forKey: "key-name")
Problemumgehung 2
Eine andere Lösung ist eine Erweiterung auf PFObject hinzuzufügen, die das subscript
Mitglied implementiert und ruft setValue:forKey:
:
extension PFObject {
subscript(index: String) -> AnyObject? {
get {
return self.valueForKey(index)
}
set(newValue) {
if let newValue: AnyObject = newValue {
self.setValue(newValue, forKey: index)
}
}
}
}
Beachten Sie, dass diese zweite Problemumgehung nicht ganz sicher ist, da ich Ich bin nicht sicher, wie Parse tatsächlich die tiefgestellten Methoden implementiert (vielleicht tun sie mehr als nur setValue:forKey
aufrufen - es hat in meinen einfachen Testfällen funktioniert, so scheint es eine gültige Problemumgehung, bis dies in Parse/Swift behoben wird.
Was meinen Sie mit "PF_NULLABLE_S" entfernen? Sollte ich sagen, Kommentar '- (PF_NULLABLE_S id) objectForKeyedSubscript: (NSString *) Schlüssel;' line out? –
Ich meine, ändern Sie es in 'PFObject.h' zu: ' '' - (ID) objectForKeyedSubscript: (NSString *) Schlüssel; '' ' – kashif
Vielen Dank, lieber Herr –