2016-08-05 26 views
0

Dies ist eher ein Ärgernis als alles andere. Ist noch jemand darüber gestolpert?unsigned int und unsigned lange Xcode Warnungen in NSLogs

Zu Debugging-Zwecken spucke ich die Zählung der _fetchedResults. Xcode gibt mir eine unsigned int Warnung, wenn ich %u verwende, und bietet dann an, es zu %lu zu ändern.

enter image description here

OK Xcode, sicher, nach rechts weiter gehen.

Dann bellt er sofort auf mich wieder mit einer unsigned long Warnung und bietet es zurück%lu zu einem %u zu ändern. Und der Zyklus wiederholt sich. Natürlich kann ich nur die NSLog löschen, aber ich benutze es während des Testens. Und ehrlich gesagt ist es nerviger als alles andere.

enter image description here

Wer sonst, bevor er über diese Sicht? Nicht sicher, wie wichtig es ist, aber ich bin auf Xcode 7.3 mit einem Bereitstellungsziel von 9.0.x.

+1

Manchmal für Debug-Zwecke verwende ich '% @' und '@ (myIntLongOrWhatverPrimitiveNum)' weil XCode kann bei 64bit/32bit Geräte Würfen zu warnen. – Larme

+0

Ich werde keine weitere Antwort hinzufügen, weil sie die Lösung erklärt haben, aber ich würde wirklich empfehlen, '% @' und '@ (myInt)' zu verwenden. Es ist die einfachste Lösung. – Sulthan

Antwort

3

Schauen Sie sich diese SO thread: Compile NSLog with unsigned int and unsigned long

Es sagt-

NSLog(@"Array has %ld elements.",(unsigned long)[array count]); 

Und auch sagt-

Der beste Weg ist NSLog(@"%lu", (unsigned long)array.count); für NSUInteger,
und NSLog(@"%ld", (long)button.tag); für NSInteger : Keine Warnungen in 32 Bit oder 64 Bit.

+0

Sweet Danke an euch DashAndRest und user3182143 ... schnellste Antwort, die ich je auf Stack erhalten habe. Habe ein schönes Wochenende. :-) – Drew

2
NSLog(@"row: %lu", (unsigned long)[_fetchedResultsController.fetchedObjects count]); 

Beschreibung

eine 32-bit unsignierte Ganzzahl auf 32-Bit-Plattformen

64-Bit-Ganzzahl ohne Vorzeichen auf 64-Bit-Plattformen.

Type  Format Specifier Cast 
----  ---------------- ---- 
NSInteger %ld    long 
NSUInteger %lu    unsigned long