簡體   English   中英

'NSInvalidArgumentException',原因:'-[__ NSCFConstantString addObject:]:無法識別的選擇器已發送到實例

[英]'NSInvalidArgumentException', reason: '-[__NSCFConstantString addObject:]: unrecognized selector sent to instance

-(void)downloadResult:(id)data
{
   if([data isKindOfClass:[NSArray class]])
   {
       if ([data count]==3) 
       {
           if ([dataResultDictionary count]) 
           {
                [[dataResultDictionary objectForKey:[data objectAtIndex:0]] addObject:[NSMutableArray arrayWithObjects:[data objectAtIndex:1],[data lastObject], nil]];
           }
           else
           {
               [dataResultDictionary setObject:[NSMutableArray arrayWithObject:[NSMutableArray arrayWithObjects:[data objectAtIndex:1],[data lastObject], nil]] forKey:[data objectAtIndex:0]];
           }
           if([dataResultDictionary count])
           {
                if ([[dataResultDictionary objectForKey:[data objectAtIndex:0]] count] == requiredResultCount) 
                 {
                    [downloadControlQueue cancelAllOperations];
                    [downloadControlQueue release];
                    downloadControlQueue = nil;
                    processing = YES;
                    [self procesResultData];
                }
            }

      }
      else
      {
            BOOL errorResult = TRUE;

            if ([data count]) 
            {
                        if ([[data lastObject] isKindOfClass:[NSMutableDictionary class]]) {
                            if ([[data lastObject] count]) {
                                if ([[[[data lastObject] allValues] objectAtIndex:0] count]) {

                                    [dataResultDictionary setObject:[data lastObject] forKey:[data objectAtIndex:0]];
                                    errorResult = false;
                }

               }
          }
       }

            if(errorResult)
            {
                [dataResultDictionary setObject:@"" forKey:[data objectAtIndex:0]];
            }
            if ([dataResultDictionary count] == requiredResultCount) {
                [downloadControlQueue cancelAllOperations];
                [downloadControlQueue release];
                downloadControlQueue = nil;
                processing = YES;
                [self procesResultData];

            }
            }
        }


    }

我正在從服務器獲取數據。 我想以圖像中的%值顯示下載結果。 但是我要崩潰了。 最初,此方法正在工作。 我在圖像中顯示的數據高達70%,但其余部分已崩潰。請幫助我

正如rakeshNS所建議的那樣,回答您的查詢似乎[dataResultDictionary objectForKey:[data objectAtIndex:0]]不是NSMutableArray 相反,它是一個NSString

為什么要嘗試在已解析的數組中添加addObject: btw是不可addObject:NSArray )? 您應該真正重新考慮解析邏輯。 如果需要,請創建一個單獨的模型類來存儲解析的數據。 您可以創建可變數組並將值存儲在此模型類中。

在您的情況下, [dataResultDictionary objectForKey:[data objectAtIndex:0]]不是數組,而是NSString。 因此,您將獲得例外。 嘗試

if ([dataResultDictionary count]) {
     if([[dataResultDictionary objectForKey:[data objectAtIndex:0]] isKindOfClass:[NSArray class]]){
          [[dataResultDictionary objectForKey:[data objectAtIndex:0]] addObject:[NSMutableArray arrayWithObjects:[data objectAtIndex:1],[data lastObject], nil]];
     }
}
else
{
     [dataResultDictionary setObject:[NSMutableArray arrayWithObject:[NSMutableArray arrayWithObjects:[data objectAtIndex:1],[data lastObject], nil]] forKey:[data objectAtIndex:0]];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM