Невозможно установить массив в NSUbiquitousKeyValueStore

Это мой код Obj-C:

    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 = @"Келли".

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

1 ответ

Решение

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

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
Другие вопросы по тегам