غير قادر على setobject: الفوركي: في nsmutabledictionary

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

  •  23-08-2019
  •  | 
  •  

سؤال

أنا متأكد من أنني أفتقد شيئا واضحا هنا في برنامج iPhone بسيط أحاول الكتابة، لكن الكود يبدو أساسي لدرجة أنني لا أستطيع أن أرى ما هو الخطأ.

أحاول استخدام NSMutabledictary لتخزين قائمة الفئات وأسماء حفظ الملفات المرتبطة بها. في ملف الرأس أذكر القاموس

@interface ClassList : UITableViewController {
NSString *homedirectory;
NSString *masterindexpath;
NSMutableDictionary *classFilenameGlossary;
NSMutableArray *listofclasses;
}

@property (retain, nonatomic) NSString *homedirectory;
@property (retain, nonatomic) NSString *masterindexpath;
@property (retain, nonatomic) NSMutableDictionary *classFilenameGlossary;
@property (retain, nonatomic) NSMutableArray *listofclasses;

وبالطبع، في ملف التنفيذ:

@implementation ClassList

@synthesize homedirectory;
@synthesize masterindexpath;
@synthesize classFilenameGlossary;
@synthesize listofclasses;

قمت بتهيئة هذا القاموس في ViewDidLoad من ملف موجود يحفظ قائمة الفصل:

- (void)viewDidLoad {
[super viewDidLoad];

// Get home directory

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
homedirectory = [paths objectAtIndex:0];
masterindexpath = [homedirectory stringByAppendingPathComponent:@"MasterIndex"];

// Get master course list or create it if necessary

NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:masterindexpath] == NO)
{
    NSMutableDictionary *temporarydictionary = [NSMutableDictionary dictionary];
    [temporarydictionary writeToFile:masterindexpath atomically:NO];
    [temporarydictionary release];
}

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

[homedirectory retain];
[masterindexpath retain];

}

في وقت لاحق، أضف عنصرا باستخدام SetObject: الفوركي: لكن القاموس لا يتغير أبدا. في الأصل كنت أقوم بذلك في وحدة تحكم عرض أخرى باستخدام مؤشر مرة أخرى إلى ملف القائمة الفصل الدراسية، ولكن بمجرد اكتشاف ذلك لم ينجح، قمت بتبسيط وحاول فقط تعيين أي كائن عينة ومفتاح ضمن ملف Classlist:

    [classFilenameGlossary setObject:@"sample filename" forKey:@"sample classname"];

لقد بحثت في قائمة مصحح الأخطاء ومتغيرها وتظهر ClassFilenameSlesary المحددة بشكل صحيح كقابلتي التسريحات الصحية مع 0 أزواج المفتاح / القيمة. أنا لا أحصل على أي نوع من الخطأ؛ القاموس ببساطة لا يتغير أبدا. في الوقت الحالي، يكون القاموس المحملة من الملف MasterindExPath فارغا (نظرا لأنني لم أتمكن من إضافة أي عناصر حتى الآن)، ولكن لا ينبغي أن أبقيني من القدرة على إضافة عناصر إلى القاموس.

أنا مبتدئ إجمالي في برمجة iPhone، لذلك أنا متأكد من وجود شيء أساسي في عداد المفقودين. كنت أقدر أي مساعدة.

لا يوجد حل صحيح

نصائح أخرى

هذا الخط:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

يجب أن تبدو مثل هذا:

classFilenameGlossary = [[NSMutableDictionary alloc] initWithContentsOfFile:masterindexpath];

لقد نسيت تخصيص الذاكرة لحضور NSMutabledictionary، لذلك لهذا السبب لا تهيئة أبدا.

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