NSLog

2009-10-06 10 views
7

का उपयोग करते हुए एनएसएमएनजेड ऑब्जेक्ट से एनएसआईएनटेगर मूल्य को मुद्रित करने के लिए कैसे करें जब मैं किसी NSManagedObject से पुनर्प्राप्त कंसोल में एक पूर्णांक मान मुद्रित करने का प्रयास करता हूं, तो यह 6 या 8 अंकों का मान (ऑब्जेक्ट आईडी?) प्रदर्शित करता है। हालांकि, अगर मैं डीबगर 'प्रिंट विवरण कंसोल' का उपयोग करता हूं तो मुझे लगता है कि एकल अंक मान के रूप में दिखाई देता है।NSLog

उदाहरण के लिए, मैं एक NSInteger करने के लिए वस्तु 'अनुक्रम' आवंटित और फिर एक NSLog प्रारूप स्ट्रिंग का उपयोग प्रदर्शित:

MyProcess *myProcess = [array objectAtIndex:i]; 
NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)myProcess.sequence] intValue]; 
NSLog(@"sequence = %d",myProcess.sequence); 

कंसोल आउटपुट है:

2009-10-06 16:11:05.871 MyProcess[33185:20b] sequence = 565256 

लेकिन जब मैं 'प्रिंट कोशिश डीबगर से कंसोल 'के लिए, मुझे मान 1:

<MyStoryImage: 0x3f59a80> (entity: MyObject; id: 0x3f2d540 <x-coredata://FF21959A- 4B67-4587-A25F-66A7B8139DFA/MyProcess/p2> ; data: { 
sequence = 1; 
<x-coredata://FF21959A-4B67-4587-A25F-66A7B8139DFA/MyProcess/p1>; 
}) 

आपकी सहायता की सराहना की जाती है!

typedef int NSInteger; 

कोड की पहली रेखा में:

उत्तर

11

आपको अपने एनएसएएनएजेडऑब्जेक्ट से जो मिलता है वह एनएसएनंबर होगा, मुझे लगता है।

MyProcess *myProcess = [array objectAtIndex:i]; 
NSLog(@"sequence = %@", myProcess.sequence); 

या, यदि आप वास्तव में NSInteger की जरूरत है:: यह मुद्रित करने के लिए इतना आसान है

MyProcess *myProcess = [array objectAtIndex:i]; 
NSLog(@"sequence = %i", [myProcess.sequence integerValue]); 

मुझे लगता है कि कोड

NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)myProcess.sequence] intValue]; 

(NSInteger) myProcess के इस बिट में परिणामस्वरूप वास्तव में NSNumber का स्मृति पता मिलता है। आप एनएसएनएनटेगर में बस एनएसएनंबर नहीं डाल सकते हैं।

+0

धन्यवाद! यह (चक के ऊपर @% की व्याख्या के साथ) दोनों मुझे बताता है कि मैं क्या गलत कर रहा था और इसे कैसे ठीक किया जाए। – dfdumaresq

-1

NSInteger सिर्फ एक पूर्णांक है

NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)sequence] intValue]; 

तुम सब क्या कर रहे हैं अपने आप को अनुक्रम बताए है जिस तरह के बारे में एक दौर में,। और चूंकि इसे प्रारंभ नहीं किया गया है, यह किसी भी यादृच्छिक संख्या हो सकता है।

+0

NSInteger हमेशा एक पूर्णांक नहीं है। 64-बिट अनुप्रयोगों में, यह एक लंबा है। –

+0

क्षमा करें, मूल उदाहरण त्रुटिपूर्ण था। मैंने इसे स्पष्ट कर दिया है (एआर) कि अनुक्रम एक माइप्रोसेस की संपत्ति है। – dfdumaresq

0

एप्लिकेशन के निर्माण के तरीके के आधार पर, एनएसआईएनटेगर 32 बिट्स हो सकता है, या यह 64 बिट हो सकता है। यदि यह एक 64-बिट मूल्य है, तो आप

NSLog(@"sequence = %qi", sequence) 

क्या करने की जरूरत है ताकि वह एक 64-बिट मूल्य के रूप में व्यवहार करता है sequence करेंगे। नोट, हालांकि, यह 32-बिट अनुप्रयोगों के लिए काम नहीं करेगा; जहां तक ​​मुझे पता है, वहां कोई एकल प्रारूप विनिर्देशक नहीं है जो 32-बिट और 64-बिट दोनों दुनिया में एनएसआईएनटेगर मुद्रित करने के लिए काम करेगा।

1

ऐसा लगता है जैसे myProcess.sequence एनएसआईएनटेगर (स्केलर) की बजाय एनएसएनंबर (ऑब्जेक्ट) है। यह समझाएगा कि यह किसी ऑब्जेक्ट के वर्णन में सही तरीके से क्यों दिखाई देता है लेकिन जब आप स्पष्ट रूप से इसे पूर्णांक के रूप में मुद्रित करने का प्रयास नहीं करते हैं।

+0

हां, यह एक एनएसएनंबर है (जैसा कि कोरडाटा द्वारा घोषित किया गया है), और मुझे लगता है कि मेरे प्रश्न का उत्तर ...मैं उलझन में था क्योंकि एनएसएसटींग गुणों को बिना किसी झगड़े के मुद्रित किया जा सकता है, लेकिन शायद स्ट्रिंग फॉर्मेटर ("% @") द्वारा कुछ अतिरिक्त काम किया गया है। धन्यवाद! – dfdumaresq

+0

'% @' विनिर्देशक किसी ऑब्जेक्ट को इंगित करता है - कोई ऑब्जेक्ट। आप इस तरह से एक NSNumber भी मुद्रित कर सकते हैं। उदाहरण के लिए, 'एनएसएलओजी (@ "% @,% @,% @!", [एनएसएनंबर संख्या विथेंट: 1], [एनएसएनंबर संख्या विथेंट: 2], [एनएसएनंबर संख्या विथेंट: 3])' लॉग इन करेगा "1, 2, 3! "। यह ऑब्जेक्ट की 'विवरण' विधि को कॉल करके काम करता है। '% D' विनिर्देशक इनट्स के लिए है। – Chuck

+0

इसके लिए धन्यवाद! – dfdumaresq

-1

इस प्रयास करें:

NSLog(@"sequence = %li",(unsigned long)myProcess.sequence); 
+2

कृपया कुछ स्पष्टीकरण के साथ अपने उत्तर में सुधार करें, espacially अन्य उत्तरों की तुलना में जहां पहले से दिया गया है – SBH

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