Сохранение NSArray

Ошибки, которые происходят при компиляции в режиме выпуска, но не в режиме отладки.

21
задан Joshua 28 September 2009 в 15:12
поделиться

3 ответа

Эта проблема, по-видимому, больше всего подходит для Core Data, поскольку она будет иметь дело со всеми данными постоянных объектов. Когда вы извлекаете свои данные, он вернет NSSet, который не отсортирован, поэтому вам нужно будет каким-то образом отсортировать данные в массиве, например, уникальный идентификационный номер, связанный с каждым созданным вами объектом.

//Creating a file path under iOS:
//1) Search for the app's documents directory (copy+paste from Documentation)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//2) Create the full file path by appending the desired file name
NSString *yourArrayFileName = [documentsDirectory stringByAppendingPathComponent:@"example.dat"];

//Load the array
NSMutableArray *yourArray = [[NSMutableArray alloc] initWithContentsOfFile: yourArrayFileName];
if(yourArray == nil)
{
    //Array file didn't exist... create a new one
    yourArray = [[NSMutableArray alloc] initWithCapacity:10];

    //Fill with default values
}
...
//Use the content
...
//Save the array
[yourArray writeToFile:yourArrayFileName atomically:YES];
39
ответ дан 29 November 2019 в 06:51
поделиться

Обычно зеленая стрелка рядом со строкой кода означает, что «это следующая строка, которая будет выполнена, если бы не тот факт, что мы застряли где-то в более глубоком фрейме стека». Однако VS не дает возможности сказать наверняка на основании предоставленной на данный момент информации ...

[РЕДАКТИРОВАТЬ - конечно, глубокое знание Win32 может дать очень хорошее предположение - см. Ответ "mos" для вероятного объяснения, основанного на известных ловушках API GetWindowText ()]

Как уже упоминалось, что Visual Studio показывает, что иногда вводит в заблуждение. Чтобы получить более полное представление о том, что именно происходит, вам нужно отключить некоторые бесполезные «функции», которые VS включает по умолчанию. В Инструменты -> Параметры -> Отладка -> Общие убедитесь, что:

  • Включить отладку на уровне адресов = ВКЛ
  • Включить только мой код = ВЫКЛ
  • Включить поддержку исходного сервера = ВКЛ

Это должно позволить вам to:

1) прервать / перешагнуть / и т. д. точную инструкцию, которая вызывает взаимоблокировку

2) просмотреть полную трассировку стека до этого момента, независимо от модуля (модулей)

3) см. исходный код по возможности, предполагая, что ваш символ &

14
ответ дан 29 November 2019 в 06:51
поделиться

This would seem to be a problem most suited to Core Data as this will deal with all the persistent object data. When you retrieve you data it will return an NSSet, which is unsorted so you will have to have some way of sorting the data in the array such as a unique id number assocaited with each object you create.

1
ответ дан 29 November 2019 в 06:51
поделиться