【问题标题】:String not getting split giving unrecognized selector error字符串未拆分导致无法识别的选择器错误
【发布时间】:2013-04-15 12:35:58
【问题描述】:

试图将字符串拆分为数组,但给出错误“[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 0x11741b20'”。字符串包含值,该值来自数组的第一个索引,然后需要将字符串拆分并存储在数组中。

这是数组值。

mcommarr:(
":comment",
":comment",
":comment"

NSString *strr = [[NSString alloc]init];
strr = [self.mCommArr objectAtIndex:indexVal];
NSArray *arr2 = [str componentsSeparatedByString:@","];

这是我使用它的完整方法。

-(void)loadData:(int)indexVal;
{    
indexVal=serialIndexVal;
serialIndexVal++;

NSLog(@"arrLike:%d", [self.mArrLike count]);
NSLog(@"arrPid:%d", [self.mArrPid count]);

status = [NSString stringWithFormat:@"get"];
[self.mButtonsStatusDict setObject:status forKey:@"status"];

[self.mButtonsPidDict setObject:[self.mArrPid objectAtIndex:indexVal] forKey:@"pid"];


[self.activityIndicator startAnimating];

@try
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{

    NSString *status = [NSString stringWithFormat:@"get"];
    [self.mButtonsStatusDict setObject:status forKey:@"status"];
    [self.mButtonsPidDict setObject:[self.mArrPid objectAtIndex:indexVal] forKey:@"pid"];

    self.mButtonsCommentsDict = [MyEventApi showComments:self.mButtonsPidDict];

    self.mButtonsDict = [MyEventApi likeDislike:self.mButtonsUidDict post:self.mButtonsPidDict postStatus:self.mButtonsStatusDict];

    dispatch_sync(dispatch_get_main_queue(), ^{

        [self.activityIndicator stopAnimating];
         NSLog(@"buttons data dict:%@", self.mButtonsDict);

        if([self.mButtonsDict count] == 0)
        {
            NSLog(@"server problem no response");
            [self.mArrLike addObject: @"0"];
            [self.mArrDislike addObject: @"0"];
        }else{
        [self.mArrLike addObject: [self.mButtonsDict valueForKey:@"like"]];
        [self.mArrDislike addObject: [self.mButtonsDict valueForKey:@"dislike"]];
        }

        if([self.mButtonsCommentsDict count] == 0)
        {
            NSLog(@"server problem no response");
             [self.mCommArrTot addObject: @"0"];
        }
        else{
            self.dictComm = [self.mButtonsCommentsDict valueForKey:@"comments"];
            [self.mCommArr addObject:[self.dictComm valueForKey:@"comment"]];
            NSLog(@"count:%d",[self.mCommArr count]);
          //  NSString *strTot = [NSString stringWithFormat:@"%d",tot];
           // [self.mCommArrTot addObject:strTot];
            NSLog(@"dictcomm:%@", self.dictComm );
            NSLog(@"mcommarr:%@", [self.mCommArr objectAtIndex:indexVal]);
            strr = [[NSString alloc]init];
            strr = [self.mCommArr objectAtIndex:indexVal];
            //NSString *strr = [[NSString stringWithFormat:@"%@", [self.mCommArr objectAtIndex:indexVal]];
           // NSArray *arr1 = [self string:strr];

           // NSArray *splitArray=[self.mCommArr[0] componentsSeparatedByString:@","];

             //[strr componentsSeparatedByString:@","];
           // NSLog(@"arrSep:%@", arr1);
            //int count = [arr1 count];
            //NSLog(@"arrcount:%d", count);
           // NSString *strTot = [NSString stringWithFormat:@"%d",count];
            // [self.mCommArrTot addObject:strTot];
            //NSLog(@"mcommarrtot:%@", [self.mCommArrTot objectAtIndex:indexVal]);
        }
       // NSLog(@"arrLike:%@", [self.mArrLike objectAtIndex:indexVal]);
        // NSLog(@"arrDisLike:%@", [self.mArrLike objectAtIndex:indexVal]);

        [self.mPublicFriendTable reloadData];

    });
});
}
@catch (NSException *exception) {
    NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); 
}
@finally {

}
}

它在尝试分裂时被杀死。为什么这样,我没有得到。如果有人遇到过这种情况,请指导她出了什么问题。

【问题讨论】:

  • 请从您的代码中复制粘贴 sn-p,因为它反映了错误的字符串名称:str,因为它应该是 strr。另外,我认为您误解了mcommarr。打印确切的值以获得完美的答案。

标签: iphone nsstring


【解决方案1】:

您可以将字符串拆分为如下所示的 NSArray...

NSString *yourString = @"comment,comment,comment";
NSArray *strArray = [yourString componentsSeparatedByString:@","];
NSLog(@"\n\n Array is ==>> %@",strArray);

【讨论】:

  • 数组没有静态值,它来自服务器。所以,它会有所不同。
  • 我只是给你一个例子,伙计......只需输入值而不是我的静态值...... NSString *yourString = [yourArray objectAtIndex:0];
  • @iPhone 嘿尝试像这样保留该字符串... [strr retain];然后使用 NSArray *arr2 = [str componentsSeparatedByString:@","];试着让我知道...
  • @iPhone 直到你有问题??也只是 NSLog(@"\n\n Array is ==>> %@",[yourArray objectAtIndex:0]);写下这一行并告诉我你在控制台中得到了什么......
  • 我认为问题只是我从字典中添加了数组中的对象。
【解决方案2】:

"[__NSArrayI componentsSeparatedByString:]:

您的错误说您尝试将上述方法发送到NSArray,但没有。

因为您想在索引 0 处拆分数组。您应该这样做:

NSArray *splitArray=[yourArray[0] componentsSeparatedByString:@","];

这里 yourArray 是您从 Server 获取的数组。

【讨论】:

    【解决方案3】:
    NSString *strr = [[NSString stringWithFormat:@"%@", [self.mCommArr objectAtIndex:indexVal]];
    NSArray *arr2 = [strr componentsSeparatedByString:@","];
    

    我认为您现在正在传递str,它可以是一个数组(正如您的错误指出的那样)。 让我知道结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      相关资源
      最近更新 更多