2016-07-22 4 views
0

In Swift, als ichErste Hash-Werte aus dem Objekt in schnellen

var controller : GCController 
// fetch some data to conbroller 
NSLog("Controller: %@",controller) 

NSLog drucken schöner

Controller: <GCController 0x1700a7680 vendorName='Remote' deviceHash=0x414e6d3d6a8c2215> 

wheres vendor öffentliche Variable ist in GCController eingeben bin, aber das ist nicht deviceHash. Kann ich irgendwie auf den Wert zugreifen? Auch als einfache Saite? Woher nimmt NSLog die Werte? Ich habe versucht, NSString in einem ähnlichen Format, aber es gab mir nicht die erwarteten Ergebnisse

+0

Was ist DeviceHash? –

+0

Von Logs, was ich herausfinden kann, ist es von System eindeutig für jede Controller-ID zugeordnet. –

+0

In diesem Fall können Sie dies beziehen: http: //stackoverflow.com/questions/24760150/how-to-get-a-hashed-device-id-for-testing-admob-on-ios –

Antwort

0

NSLog zeigt Ihnen wahrscheinlich die DebugBeschreibung Eigenschaft des GCController, während print und die Likes zeigen Sie die Beschreibung Eigenschaft.

+0

Ist das debugDescritpion auch in Release Build verfügbar? Oder nur in debug man? –

+0

Ich sehe nicht, warum es nicht sein würde (das sollte leicht verifizierbar sein, indem man einfach im Freigabemodus baut). Es kann ein wenig riskant sein, sich auf das Format der Zeichenfolge zu verlassen, um den Hash daraus zu extrahieren. Unwahrscheinlich, wie es klingen mag, könnte Apple in einer zukünftigen Version Änderungen am Framework vornehmen und Ihre String-Parsing-Logik ungültig machen. Ich glaube, dass, wenn es keinen verbundenen Controller gibt, dieser String auch ein bisschen anders ist. –

+0

Gibt es keine C# -ähnliche Reflektion, um auf diesen Wert zuzugreifen? Ich habe gelesen, dass es seinen hashValue widerspiegelt, es ist nicht Hashtable aller Werte, richtig? Es ist nur Rechenhash für Vergleiche? –