Неверное возвращаемое значение функции (возможно, неправильная строка «type»?) - PullRequest
0 голосов
/ 08 ноября 2011

Я получил функцию, которая должна возвращать значение int.

- (int)function:(NSString *)input
{
 if (input == @"test1")
    {
        return 0;  
    }
 if (input == @"test2")
    {
        return 1;  
    }
 if (input == @"test3")
    {
        return 2;  
    }
 else
{
    return 3;
}
}

Здесь я вызываю функцию:

[self function:self.detailItem.type]

Отладчик показывает input __NSCFString * 0x6b9a0b0 и возвращает любое 29938idontknow значение.

Если я звоню [self function:@"test1"], все работает нормально.

detailItem - это тип TV, который представляет собой NSManagedObject с атрибутом type, определенным какstring.Должны ли быть проблемы с string -типами?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Вы должны сравнить NSString так:

if ([input isEqualToString:@"test1"])
{
    // Some code here
}
1 голос
/ 08 ноября 2011

Убедитесь, что self.detailItem.type является NSString:

if ([self.detailItem.type isKindOfClass:[NSString class]])

перед вызовом

[self function:self.detailItem.type]

и сравните строки, подобные этой

[input isEqualToString:@"test1"];

в настоящее время сравнивая адреса памяти, которые в этом случае всегда будут разными, вы должны сравнивать содержащиеся в них строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...