2012-06-02 1 views
0

У меня возникла странная проблема, которая вызывает у меня довольно головную боль. Я инициализирую объект NSArray, используя initWithObjects. Я передаю 7 объектов, но сразу послесловия, если я регистрирую счет массива, у меня есть только счет 3. Кто-нибудь еще видел это? Я использовал этот метод бесчисленное количество раз без проблем, и я не вижу, что я делаю неправильно. Код ниже:NSArray initWithObjects инициализируется только некоторыми объектами

-(DMORecipe *) saveRecipe:(NSNumber *)recipeID recipeTitle:(NSString *)title recipeDescription:(NSString *)description pictureFile:(NSString *)picFile preparationTime:(NSString *)prepTime cookingTime:(NSString *)cookTime ovenTemperature:(NSString *)ovenTemp { 
    NSArray *newRow = [[NSArray alloc] initWithObjects:recipeID,title, description, picFile, prepTime, cookTime, ovenTemp, nil]; 
    NSLog(@"Before update, the number of args is %i", [newRow count]); 
} 

Есть ли у меня тип-o где-то, что мне не хватает? Вы можете видеть, что я передаю 7 объектов в инициализатор массива, но метод NSLog показывает [newRow count] = 3.

+0

nhahtdh является правильным. Посмотрите на его сообщение ниже. В методе 'initWithObjects' передача' nil' в качестве параметра сигнализирует, что это последний переданный объект. На стороне примечания я бы рекомендовал использовать 'NSURL' вместо' NSString' для вашего параметра picFile, поскольку NSURLs более эффективны при хранении данных пути. Проверьте этот вопрос для получения дополнительной информации о NSURL и NSStrings: pasawaya

ответ

2

Если какой-либо объект прошел в nil, остальная часть аргумента будет проигнорирована.

В этом случае, кажется, что picFile - nil.

Смежные вопросы