سؤال

في الكود التالي ، أحاول قراءة البيانات من plist:

 -(void)readPreferences 
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray * myAppDefaults  = [defaults mutableArrayValueForKey:@"LastList"];
        myCustomObject * savedObject;
        NSUInteger i;
        for (i = 0; i < [myAppDefaults  count]; i++) 
        {
            NSArray * thisArray = [myAppDefaults  objectAtIndex:i];

            savedObject.value1 = [thisArray objectAtIndex:0];
            savedObject.value2 = [thisArray objectAtIndex:1];
            savedObject.value3 = [thisArray objectAtIndex:2];
            savedObject.value4 = [myAppDefaults  objectAtIndex:3];

            [objectsArray addObject:savedObject];
        }

    }

بطريقة ما ، عندما أحاول تعيين "SaveObject.value1" ، أحصل على خطأ "exc_bad_access".

أدرك أن هذا أمر محتمل جدًا لإدارة الذاكرة الأساسية ، أو نوعًا من الارتباك المؤشر/الكائن ، لكنني ما زلت أتعلم. آمل أن يتمكن شخص ما من مساعدتي هنا. مع أطيب التحيات Sjakelien

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

المحلول

أنت لم تتم تهيئتها savedObject في الوقت الذي تقوم فيه بتعيين value1 منشأه. ستحتاج إلى إضافة:

savedObject = [[myCustomObject alloc] init];

قبل الخاص بك for حلقة لكي تكون كائن صالح يمكنك تعيين خصائص عليه.

نصائح أخرى

أنا لا أرى mutableArrayValueForKey في NSUserDefaults. محاولة arrayForKey: بدلاً من ذلك ، سيعطيك ذلك NSArray*.

يبدو أن القيم التي تم إرجاعها defaults غير قابلة للتغيير (من المنطقي وأنت تحصل على أشياء من الملف).

تحقق من القيمة التي تم إرجاعها من mutableArrayValueForKey, ، أظن أنه لا شيء.

على المظهر الثاني ، لا معنى له رمزك. في أي وقت من الأوقات ، يمكنك تخصيص عمليات المحفوظات ولكنك تقوم بإدراجها مرارًا وتكرارًا في مجموعة. حتى الطريقة التي تستخرج بها القيم لا تبدو صحيحة.

أود أن أقترح النظر في مرجع NSUSERDEFAUTLS في وثائق Apple ، وله أمثلة على الاستخدام الأساسي.

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