У меня странный сбой. Я создаю новое приложение из существующего приложения ... и изменяя его из NSDocumentsDirectory в NSApplicationSupportDirectory, я получаю ошибку утверждения по коду, который работает достаточно хорошо, прежде чем касаться методов, связанных с NSDcoumentDirectory. Код, имеющий отказ, находится в цветовой модели.iOS Утверждение отказа при запуске
+(UIColor *) colorFromDashSeperatedStringRepresentation: (NSString *) dashSeperatedStr
{
NSArray * components = [dashSeperatedStr componentsSeparatedByString:@"#"];
assert([components count] == 4); // Assertion failure here...
float red = [[components objectAtIndex:0] floatValue];
float green = [[components objectAtIndex:1] floatValue];
float blue = [[components objectAtIndex:2] floatValue];
float alpha = [[components objectAtIndex:3] floatValue];
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
Как видно, существует четыре компонента. Все они перечислены как отдельные свойства. Это ошибка в журнале ...
Assertion failed: ([components count] == 4), function +[CAG_Color colorFromDashSeperatedStringRepresentation:], file /Users/marc/Documents/CAG/iClassNotes/iClassNotes/iClassNotes/CAG_Color.m, line 77.
Любая помощь в этом была бы высоко оценена !!! Мне удалось обойти эту ошибку в этом новом приложении, поместив все контроллеры во вновь созданный проект и не касаясь методов NSDocumentDirectory. Я хотел бы знать, что здесь не так!
Это решение, позволяющее мне присваивать значения массива и удовлетворять утверждению, которое называется много раз ... мое приложение является текстовым приложением, а цветовая модель используется много.
+(UIColor *) colorFromDashSeperatedStringRepresentation: (NSString *) dashSeperatedStr
{
NSArray * components = [dashSeperatedStr componentsSeparatedByString:@"#"];
NSLog(@"Components before assert: %@", components);
if (components == NULL)
{
NSArray *values = @[@0.000000, @0.000000, @1.000000, @0.000000];
components = values;
}
NSLog(@"Components after if: %@", components);
assert([components count] == 4);
float red = [[components objectAtIndex:0] floatValue];
float green = [[components objectAtIndex:1] floatValue];
float blue = [[components objectAtIndex:2] floatValue];
float alpha_c = [[components objectAtIndex:3] floatValue];
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha_c];
}
Надеюсь, это поможет кому-то!
Цените ответ ... не знаю, почему я Бесполезный 't проверить значения массива. Конечно, они показывают нуль. Duh! Неудивительно, что утверждение потерпело неудачу. На самом деле это был не тот ответ, который я искал, и он не разрешил проблему, но он поставил меня на правильный путь, чтобы выяснить, какова реальная проблема ... «Почему массив пуст?» –
После нескольких дальнейших исследований и попыток несколько вещей я нашел сообщение от 3 лет назад о NSArrays. Это помогло мне увидеть путь вокруг проблемы. Я добавил редактирование, которое дает решение. –