У меня странный сбой. Я создаю новое приложение из существующего приложения... и при изменении его с NSDocumentsDirectory на NSApplicationSupportDirectory я получаю ошибку утверждения для кода, который работает достаточно хорошо, прежде чем прикасаться к методам, связанным с NSDcoumentDirectory. Код с ошибкой находится в цветовой модели.
+(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];
}
Надеюсь, это поможет кому-то!