2016-12-08 7 views
1

У меня есть приложение iOS, которое соответствует входящим текстовым полям , стандартным полям, используемым для импорта записей. Моя проблема в том, что NSMutableDictionary, который использует эти поля, пуст! Вот код, который сохраняет отображение:Синглтоновский словарь пуст, и я не понимаю, почему

-(void)mapUserFields: (id) sender { // move contents of each textField when user has finished entering it 

    SingletonDictionary *sd = [SingletonDictionary sharedDictionary]; 

    UITextField *tf = (UITextField *)sender; // textfield contains the pointer to user's half of the equation 
    int tagValue = (int)tf.tag; // get the tag value 

    [sd.dictionaryOfUserIndexes setObject:tf.text forKey:[NSString stringWithFormat:@"%d", tagValue]]; // value found in textField id'd by tag 

    NSLog(@"\nfield.text: %@ tagValue: %d nsd.count: %d\n",tf.text, tagValue, sd.dictionaryOfUserIndexes.count); 

} 

Это является результатом NSLog:

field.text: 1 tagValue: 38 nsd.count: 0

Это является определение singleton в файле .h:

@property (nonatomic, retain) NSMutableDictionary *dictionaryOfUserIndexes; 

Это код для инициализации пения leton в файле .m:

//-- SingletonDictionaryOfUserIDs -- 
+ (id) sharedDictionary { 

    static dispatch_once_t dispatchOncePredicate = 0; 
    __strong static id _sharedObject = nil; 
    dispatch_once(&dispatchOncePredicate, ^{ 
     _sharedObject = [[self alloc] init]; 
    }); 

    return _sharedObject; 
} 

-(id) init { 
    self = [super init]; 
    if (self) { 
     dictionaryOfUserIndexes = [NSMutableDictionary new]; 
    } 
    return self; 
} 

@end 

Я считаю, что моя проблема, потому что sd.dictionaryOfUserIndexes не инициализирован, но я не уверен, если это правда, и если да, то как инициализировать его (я попробовал несколько разных вариантов, все из которых создали ошибки сборки). Я посмотрел на SO и Google, но ничего не нашел, что касается этой конкретной проблемы. Помощь будет принята с благодарностью!

+0

Показать, как 'dictionaryOfUserIndexes' объявлен в вашем одноточечном классе. И, пожалуйста, отформатируйте свой код. Вы отправили слишком много вопросов для публикации плохо отформатированного кода. – rmaddy

+0

Это лучше: форматирование моего кода? Если нет, я не понимаю, о чем вы говорите ... пожалуйста, продумайте ... SD – SpokaneDude

+0

Что наследует 'SingletonDictionary'? –

ответ

1

Есть несколько вещей, которые мы могли бы улучшить в этом коде, но единственное, что неправильно с ним ссылка на dictionaryOfUserIndexes в методе init. Код, как отвечал бы не обобщать, если: (а) вы не имеете строку:

@synthesize dictionaryOfUserIndexes = dictionaryOfUserIndexes; 

так, что переменная Подложка с именем без префикса по умолчанию _, или (б) вы обратитесь к Ивар с префикс по умолчанию, как в:

_dictionaryOfUserIndexes = [NSMutableDictionary new]; 

другой способ - предпочтительнее в большинстве любого контекста, за исключением в рамках метода инициализации - это использование синтезированного сеттера, как:

self.dictionaryOfUserIndexes = [NSMutableDictionary new]; 

Но именно h, которые изменяются в одиночку (так что он будет скомпилирован) ваш код работает нормально, добавляет значение в словарь и записывает увеличенный счетчик.

+0

Большое вам спасибо ... Я очень ценю это ... – SpokaneDude

 Смежные вопросы

  • Нет связанных вопросов^_^