1

Это мой Obj-C код:Невозможно установить массив в NSUbiquitousKeyValueStore

NSMutableArray *staffNamesArray = [[[NSUbiquitousKeyValueStore defaultStore] arrayForKey:@"staffNamesArray"] mutableCopy]; 

    NSInteger indexSelected = [oStaffPickerView selectedRowInComponent:0]; 
    [staffNamesArray replaceObjectAtIndex:indexSelected withObject:textField.text]; 

    [[NSUbiquitousKeyValueStore defaultStore] setArray: staffNamesArray forKey:@"staffNamesArray"]; // save it to the cloud 
    [[NSUbiquitousKeyValueStore defaultStore] synchronize]; 

IndexSelected является 0; textfield.text = @ "Kellie".

По какой-то причине персоналNamesArray никогда не будет установлен. Зачем?

+1

Если массив еще не существует в магазине, то 'staffNamesArray' будет' nil'. Проверьте это. – rmaddy

+0

Привет, Рик ... это было ... Я инициализировал массив, но забыл сохранить его в магазине ... исправил его, и он работает как чемпион. Еще раз спасибо ... Если вы переписываете свой комментарий в качестве ответа, я могу закрыть это и дать вам очки. : D – SpokaneDude

ответ

3

Наиболее вероятно, проблема эта линия:

NSMutableArray *staffNamesArray = [[[NSUbiquitousKeyValueStore defaultStore] arrayForKey:@"staffNamesArray"] mutableCopy]; 

Это приведет к staffNamesArray быть nil, если нет данных. Вам нужно проверить это и создать массив по мере необходимости:

NSMutableArray *staffNamesArray = [[[NSUbiquitousKeyValueStore defaultStore] arrayForKey:@"staffNamesArray"] mutableCopy]; 
if (!staffNamesArray) { 
    staffNamesArray = [NSMutableArray array]; 
} 

// and the rest of your code