এই আইওএসটি কি ধরণের বিদ্রূপাত্মক ত্রুটি?


83

ক্যালেন্ডারের তারিখগুলি দেখতে দেখতে এইগুলি সাজানোর জন্য আমার কিছু কোড রয়েছে

#if !(TARGET_IPHONE_SIMULATOR)
    NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0
                                                              locale:[NSLocale currentLocale]];
    [fmt setDateFormat:formatString];
#else
    [fmt setDateFormat:@"HH:mm dd MMM yyyy"];
#endif

যদি আমি এটি সিমুলেটারে চালিত করি তবে ঠিক আছে। আমি যদি এটি ডিভাইসে চালিত করি তবে আমি এই ব্যঙ্গাত্মক ডিবাগ বার্তাটি পাই।

2012-09-19 22: 40: 13.972 APPNAME [4923: 907] * - [__ এনএসসিএফসিএলডার উপাদান: তারিখ থেকে:]: তারিখ শূন্য হতে পারে না

আমি সত্যিই বলতে চাইছি, আপনি কি মনে করেন যে অপারেশনটি শূন্য তারিখের সাথে বোঝানো উচিত?

আপাতত আপত্তি এড়ানো হয়েছে।

এই ত্রুটিগুলির কয়েকটি এর বিরুদ্ধে এই অভিযোগটি প্রকাশিত হতে চলেছে, তারপরে আরও লঙ্ঘনগুলি নিঃশব্দে নিঃশব্দে যা কিছু এলোমেলো ফলাফলের ফলে ঘটবে। এবার ব্যাকট্রেসটি এখানে এই ঘটনাটি ঘটেছে (সংকলক অপ্টিমাইজেশনের কারণে কিছু ফ্রেম অনুপস্থিত হতে পারে):

আপনার এটি দেখে হাসতে হবে তবে আমার কোডটিতে কী ভুল তা আমি নিশ্চিত নই dateFormatFromTemplate:। কোন সাহায্য প্রশংসা করা হবে।

এক্সকোড ভি 4.5 বিটিডাব্লু চলছে


হালনাগাদ:

ব্যাকট্রেস:

0 কোরফাউন্ডেশন 0x39ff0e55 + 84
1 অ্যাপ্লিকেশন 0x00040be1 - [সভাগুলি দেখুনকন্ট্রোলারের তারিখআটাবেইনিংআফডে ফরোয়ার্ড তারিখ:] + 140

সুতরাং আমি অনুমান করি যে আমার dateAtBeginningOfDayForDateপদ্ধতিতে জিনিসগুলি খারাপ হচ্ছে । যা দেখতে এরকম দেখাচ্ছে:

/*
 Break down a given NSDate to its bare components for sorting
 */
- (NSDate *)dateAtBeginningOfDayForDate:(NSDate *)inputDate
{
    // Use the user's current calendar and time zone
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
    [calendar setTimeZone:timeZone];

    // Selectively convert the date components (year, month, day) of the input date
    NSDateComponents *dateComps = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:inputDate];

    // Set the time components manually
    [dateComps setHour:0];
    [dateComps setMinute:0];
    [dateComps setSecond:0];

    // Convert back
    NSDate *beginningOfDay = [calendar dateFromComponents:dateComps];
    return beginningOfDay;
}

প্রদত্ত এনএসডিটকে এর মূল উপাদানগুলিতে ভাঙতে আমি এই পদ্ধতিটি ব্যবহার করি যাতে আমি সেগুলি আরও দক্ষতার সাথে সাজতে পারি। তবে, আমার অ্যাপ্লিকেশনটি আন্তর্জাতিক হতে হবে যা NSLocaleতারিখের আউটপুটটি বিন্যাস করতে পিছনে কারণ । যা দেখে মনে হচ্ছে তা থেকে dateAtBeginningOfDayForDateআন্তর্জাতিকভাবেও আমার কাজ করার দরকার পড়ে ।


40
ঠিক আছে, এটি আমাকে হাসায়। অ্যাপলের কারও কাছে হাস্যকর বোধ আছে ...
nneonneo

4
এটি বলেছে একটি ব্যাকট্র্যাস আছে। ব্যাকট্রেসে কি আছে?
nneonneo

4
ঠিক আছে, আমি কৌতূহল ছিলাম যে এই দুটি লাইনের মধ্যে একটি ক্র্যাশ হয়েছিল। এর মান কী formatString?
nneonneo

4
সত্যিই কি এই দুটি লাইনের একটিতে ক্রাশ হয়? সেখানেই ব্যাকট্রেস সাহায্য করবে ...
nneonneo

4
আমি মনে করি আপনার পোস্ট করা কোড থেকে এটি অত্যন্ত সুস্পষ্ট এবং আপনার যে ত্রুটিটি পেয়েছিল তা inputDateঅবশ্যই হওয়া উচিত nil। উচ্চতর স্ট্যাক ফ্রেমগুলি দেখুন এবং দেখুন যে আপনি কী nilইনপুট তারিখ প্রেরণ করতে পারেন তা নির্ধারণ করতে পারেন ।
nneonneo

উত্তর:


16

আপনার পোস্ট করা কোডে ত্রুটিটি ঘটে না। এর অর্থ কোথাও কোথাও আপনার এমন কিছু আছে যা এটি হওয়ার কথা NSDateএবং এর পরিবর্তে এটি nil

ত্রুটি বার্তায় হাস্যরস হিসাবে, আমি কখনও সেই বার্তাটি দেখিনি, তবে অ্যাপলকে +1 করেছি। কোকো বিভাগের কয়েকজন প্রকৌশলী যেমন মজাদার তেমনি ভাল পুরানো ইঞ্জিনিয়াররা অ্যাপলটিরও অনেক সময় আগে ব্যবহার করত।

অ্যাপলের এমপিডব্লু সি সংকলকটি থুতু দেওয়ার জন্য ব্যবহৃত ধরণের ডায়াগনস্টিকগুলি দেখুন: http://www.netfunny.com/rhf/jokes/91q3/cerferences.html


এটি প্রায় এক মাইল লম্বা, এটি আসলে খুব বেশি নয়। জিনিসটি হ'ল আমি যদি উপরের কোডটি কেবল ডিভাইসে চালিত করি তবে [fmt setDateFormat:@"HH:mm dd MMM yyyy"];এটি ঠিক আছে। সুতরাং আমি ধরে নিচ্ছি যে dateFormatFromTemplate:এটি কোনওভাবেই ভুল।
এলোমেলোভাবে

এই মন্তব্যটি শুধুমাত্র হাস্যরসের সাথে সম্পর্কিত ... আমাকে একবার সূত্রটি সানোস এসসিএসআই ডিস্ক ড্রাইভার (এসডিএসি) -তে পরিবর্তন করতে হয়েছিল। কিছুটা বিট টেস্টিং কোডের উপরে একটি মন্তব্য ছিল যা বলেছিল যে * / * স্বাদের বিটগুলি থেকে স্নার্ফ ইয়ুমোমস * /
জনকিউ

6

আমাকে এটি নির্ধারণ করতে সাহায্য করার জন্য নননিওকে অনেক ধন্যবাদ ।

আমার সমস্যাটি হ'ল আমার অ্যাপ্লিকেশনটিকে আন্তর্জাতিকভাবে কাজ করতে হবে তাই ব্যবহারকারীর অবস্থানের সাথে সম্মতি প্রদর্শন করার জন্য আমার তারিখের দরকার ছিল। আমি ভেবেছিলাম যে আমি কেবল NSDateFormatterব্যবহারকারীদের জন্য একটি তৈরি করব তারপরে স্ট্রিং ডেটে পাস করব:

 NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0
                                                              locale:[NSLocale currentLocale]];
date = [fmt dateFromString:[NSString stringWithFormat:@"%@ %@", obj.meetingTime, obj.meetingDate]];

তবে সমস্যাটি হ'ল স্ট্রিংয়ের তারিখে পাসের আগে আমি তারিখের ফর্ম্যাটটি স্থানীয়করণ করেছি was আমার ক্ষেত্রে NSDateFormatterস্থানীয়করণের পরে এইরকম লাগছিল।

MMM dd, yyyy, HH:mm

স্থানীয়করণের পরে আমি যে ফর্ম্যাটটি স্থানীয়করণের পরে বিভিন্ন উপায় দেখতে পেল।

সুতরাং একটি বিন্যাসের সাথে একটি স্ট্রিং মধ্যে পাস HH:mm dd MMM yyyyএটি ফিরে আসতে কারণ ছিলnil

যা এখন সুস্পষ্ট -.-

সুতরাং আমি তারিখটি তৈরি করার সময় স্থানীয়করণের পরিবর্তে, মানক বিন্যাস সহ তারিখগুলি তৈরি করি HH:mm dd MMM yyyy। তারপরে প্রদর্শন করার সময়, আমি NSDateব্যবহারকারীদের সম্পর্কিত লোকালে ফর্ম্যাট করি format


আপনার লোকেল "বৈশিষ্ট্য" সম্পর্কে সচেতন হওয়াও দরকার ।
হট লিকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.