طباعة userinfo من nserror من البيانات الأساسية يلقي exc_bad_alloc

StackOverflow https://stackoverflow.com/questions/3755328

سؤال

أنا أستخدم هذا الرمز (من بيانات iPhone الأساسية لم يتم حلها أثناء حفظها) لطباعة وصف أكثر تفصيلاً لكائن nserror:

- (NSString*)debugDescription
{
  NSMutableArray* errorLines = [NSMutableArray array];

  [errorLines addObject:[NSString stringWithFormat:@"Failed to save to data store: %@", [self localizedDescription]]];

  NSArray* detailedErrors = [[self userInfo] objectForKey:NSDetailedErrorsKey];
  if (detailedErrors != nil && [detailedErrors count] > 0)
  {
    for (NSError* detailedError in detailedErrors)
    {
      // The following line crashes the app
      [errorLines addObject:[NSString stringWithFormat:@"  DetailedError: %@", [detailedError userInfo]]];
    }
  }
  else
  {
    [errorLines addObject:[NSString stringWithFormat:@"  %@", [self userInfo]]];
  }

  return [errorLines description];
}

المشكلة هي أنه كلما حاولت الوصول إلى كائن UserInfo الخاص بـ nserror المتداخل ، يتعطل التطبيق مع exc_bad_alloc.

يتم إنشاء الخطأ المعني عندما أقوم بإنشاء NSManagedObject وملبئه بالبيانات. جميع الخصائص التي أخصصها على الكائن تحتفظ بكل ما يتم تعيينه لهم ، لكن يبدو أنه لا يتم الاحتفاظ بشيء ما بشكل صحيح.

كيف يمكنني تتبع هذا؟ لم يخبرني NszombieEnabled أي شيء مفيد.

هل كانت مفيدة؟

المحلول

دوه. لقد قمت بتسمية أحد الأعمدة (وخاصية المهمة المرتبطة) "الوصف" ، وهو بالطبع يتجاوز طريقة "وصف" NSOBject ، مما يسبب أشياء سيئة. لي غبي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top