exc_bad_access محاولة قراءة nsarray
-
06-07-2019 - |
سؤال
في الكود التالي ، أحاول قراءة البيانات من 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 ، وله أمثلة على الاستخدام الأساسي.