2016-09-09 7 views
16

से प्रदर्शित नहीं होता मैं देखा है कि NSLog कंसोल के लिए पूरे लॉग-संदेश मुद्रण नहीं है। यह विशेष रूप से ध्यान देने योग्य है जब, एक API कि जानकारी का एक बहुत डाउनलोड करता है के खिलाफ काम कर एक REST API तरह एक डेटाबेस से सभी उत्पादों डाउनलोड, यह केवल पहला उत्पाद पर पहले 30 कुंजी पता चलता है, जानकारी के बाकी काटा गया है ...Xcode 8 आज Xcode 8 जीएम को अपग्रेड करने के बाद पूरे NSLog उत्पादन

मैं, मुद्रण सरणियों और शब्दकोशों हूँ कि यदि कोई फर्क नहीं पड़ता।

NSDictionary *allProducts = responseFromAPI; 
NSLog(@"All products:%@", allProducts); 

क्या किसी और ने यह देखा है? और क्या कोई यह जानता है कि इसे कैसे ठीक किया जाए?

+0

मुझे एक ही समस्या है और मैं इसे समझ नहीं सकता! मैं मुद्रण, यह मेरा है dicts नहीं कर रहा हूँ - पूरी स्ट्रिंग मुद्रित करने के लिए प्रयोग किया जाता है, अब केवल बाहर प्रिंट 1028 वर्ण हर बार: NSLog (@ "डेटा:% @", [[NSString alloc] initWithData: डेटा एन्कोडिंग: NSUTF8StringEncoding]) ; – lomokat

+0

क्या यह xCode 8 में अपग्रेड करने के बाद भी शुरू हुआ? – Pointblaster

+0

yup केवल xcode 8 जीएम के बाद शुरू हुआ। मैंने इसे अंतिम बीटा में नहीं देखा। – lomokat

उत्तर

7

@Lion यथासंभव आसान उसकी टिप्पणी में बताया गया है बजाय printf का उपयोग करने के लिए है। यह बिल्कुल NSLog की तरह काम नहीं करता है लेकिन यह दिखाता है कि आप क्या चाहते हैं।

NSDictionary *allProducts = responseFromAPI; 
NSString * string = [NSString stringWithFormat: @"%@", allProducts]; 
printf("%s", [string UTF8String]); 

या कम:

NSDictionary *allProducts = responseFromAPI; 
printf("%s", [NSString stringWithFormat: @"%@", allProducts].UTF8String); 

एक टिप शुरुआत या printf प्रारूप के अंत में एक "\ n" जगह तो यह outputs अलग कर देगा और एक पंक्ति में सब नहीं डाल है । कुछ इस तरह:

printf("%s\n", string.UTF8String); 

आप printf लेखन के बजाय हर बार जब आप एक #define कोड रीडायरेक्ट करने के लिए एक printf को यह (@xfdai से कोड) की तरह उपयोग कर सकते हैं पसंद नहीं है:

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); 

उम्मीद है कि यह ऐप्पल से सिर्फ एक बग है जो जल्द ही तय हो जाएगा, तब तक हम इसका उपयोग कर सकते हैं।

0

आप इस विधि का उपयोग कर सकते हैं। हर 800 वर्ण विभाजित करें। या सेट किया जा सकता है। NSLOG मुझे लगता है कि हर 1000 वर्णों को छोटा कर दें। यदि स्ट्रिंग 800 से कम है तो एक साधारण NSLog का उपयोग करेगा। यह जेसन लंबे तारों के लिए उपयोगी है और कंसोल का उपयोग करता है। printf कंसोल नहीं Xcode डीबग विंडो का उपयोग करता है।

-(void) JSLog:(NSString*)logString{ 

     int stepLog = 800; 
     NSInteger strLen = [@([logString length]) integerValue]; 
     NSInteger countInt = strLen/stepLog; 

     if (strLen > stepLog) { 
     for (int i=1; i <= countInt; i++) { 
      NSString *character = [logString substringWithRange:NSMakeRange((i*stepLog)-stepLog, stepLog)]; 
      NSLog(@"%@", character); 

     } 
     NSString *character = [logString substringWithRange:NSMakeRange((countInt*stepLog), strLen-(countInt*stepLog))]; 
     NSLog(@"%@", character); 
     } else { 

     NSLog(@"%@", logString); 
     } 

} 
संबंधित मुद्दे