Проблема с isEqualToString: метод и NSInteger - PullRequest
0 голосов
/ 03 сентября 2011

Это мой код:

for (int i=0; i<countingArray.count; i++) {
    NSDictionary *element=[countingArray objectAtIndex:i];
    NSString *source=[element objectForKey:@"id"];
    NSInteger count= [[element objectForKey:@"count"] integerValue];
    NSLog("source: %@",source); //Works
    NSLog("count %d",count);    //Don't Work! Error at this line

    for(int c=0; c<subscriptions.count; c++) {
        SubscriptionArray * element =[subscriptions objectAtIndex:c];
        NSLog(@"sorgente sub %@",element.source);
        NSLog(@"sorgente counting %@",source);
        if([source isEqualToString:element.source]) {
            element.count=count;
            [subscriptions replaceObjectAtIndex:c withObject:element];
            NSLog(@"equal"); 
            //this part of code is never been executed but I'm sure that
            //the if condition in some cases returns true
        }
    }
}

Когда я пытаюсь NSLog("count %d",count);, мое приложение вылетает без какой-либо информации о. У меня также есть другая проблема с if([source isEqualToString:element.source]) Я уверен, что иногда условие возвращает true ... Как я могу удалить пробел? Понравилась функция обрезки в php? спасибо

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Изменение:

NSString *source=[element objectForKey:@"id"];
NSInteger count= [[element objectForKey:@"count"] integerValue];

до:

 NSString *source=[element valueForKey:@"id"];
 NSInteger count= [[element valueForKey:@"count"] integerValue];

Для удаления пробелов вы можете попробовать:

NSString *trimmedString = [yourString stringByReplacingOccurrencesOfString:@" " withString:@""];
1 голос
/ 03 сентября 2011

Я не заметил первые два утверждения NSLog. Они оба в форме NSLog("something: %@", something). Это строковый литерал C, тогда как NSLog использует NSString для своего формата. Это приведет к краху. Вы хотите NSLog(@"source: %@", source).

...