Невозможно добавить строку - PullRequest
0 голосов
/ 22 февраля 2012

Я не могу понять, почему вывод self.tmp равен нулю.

Вот код, который я использую

[self.dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
{
    NSMutableString *t = [NSString stringWithFormat:@"%@ - %@", key, obj];
    [self.tmp appendString:t];
}];

NSLog(@"%@", self.tmp) --> print null;

tmp объявлено как NSMutableString.

Я могу подтвердить, что dict ivar содержит данные.

Ответы [ 4 ]

3 голосов
/ 22 февраля 2012

Потому что self.tmp само по себе nil. Вы заявили об этом, но устанавливаете ли вы его или выделяете изначально? Добавление будет работать, только если вы добавляете существующую строку.

В Objective-C вы не увидите ошибку, если попытаетесь добавить объект к nil, вы увидите только результат, который вы видите, то есть ничего не произошло.

Непосредственно перед кодом, который вы публикуете здесь, вы можете сделать это:

self.tmp = [NSMutableString string];
1 голос
/ 22 февраля 2012

Вам нужно инициализировать и распределить ivar tmp, обязательно инициализируйте его как @"", это единственная проблема, из-за которой у вас могут возникнуть проблемы. Вам не нужно явно выделять его, вы можете использовать автоматически выпущенный объект, вызывая некоторые методы класса:

self.temp=[NSMutableString stringWithString:@""];

Если ваша строка установлена ​​как nil, вы добавляете что-то к nil, и, поскольку nil не может справиться с таким поведением, вы получите неожиданные результаты.

0 голосов
/ 22 февраля 2012

self.tmp не создан.Do:

self.tmp = [NSMutableString new];

0 голосов
/ 22 февраля 2012

Можете ли вы подтвердить, что self.tmp != nil перед началом?

...