2011-09-12 2 views
0

こんにちは友人、iphoneで正規表現にcomponentsSeparatedByStringを与えるためにどのように

は、私がここに規制をしています私はすべてを作成し、私は、配列に格納しても、コンソールに私もグループに与えることを印刷しますが、私は与えるときcomponentsSeparatedByStringです私はこのmeassageをこのコード私のアプリケーションのクラッシュをやったとログメッセージの印刷を行うとき、私は間違っているところ、なぜ機能していない: -

[__NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x4e283a0 
    2011-09-12 14:05:48.400 RegexKitLiteDemo[10576:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x4e283a0 

これは私のコードは、いくつかのいずれかが正しい方向に私を助けてくださいです

-(void)sendRequest 

{ 
    // create the request 
    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.bookryanair.com/SkySales/FRSearch.aspx"] 
               cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:60.0]; 

    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
    if (theConnection) { 

     webData = [[NSMutableData data] retain]; 
     NSLog(@"%@",webData); 
    } else { 
     // inform the user that the download could not be made 
    } 

} 

/// this for checking is that Sync is work or not 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    [webData setLength: 0]; 


} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{   
    [webData appendData:data]; 

} 

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{  
    [connection release]; 
    [webData release]; 
    NSLog(@"Connection failed! Error - %@ %@", 
      [error localizedDescription], 
      [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]); 

} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{  
    loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 



    [connection release]; 

    NSString *regexString = @"Stations\\[""(.*)""\\] = new Station\\((.*)new Array\\((.*)\\)\\);"; 
    matchArray = [loginStatus arrayOfCaptureComponentsMatchedByRegex:regexString]; 




    NSLog(@"matchArray: %@", matchArray); 


    group = [[NSMutableArray alloc] initWithCapacity:[matchArray count]]; 

    for (int i = 0; i < [matchArray count]; i++) { 

     NSString *temp = [[matchArray objectAtIndex: i] componentsSeparatedByString: @","]; 

     [group addObject: temp]; 
    NSLog(@"group: %@", group); 
    } 
} 

答えて

2

componentsSeparatedByStringメソッドはNSStringに適用され、NSArrayを返します。

- (NSArray *)componentsSeparatedByString:(NSString *)separator 

NSArray *array = [aString componentsSeparatedByString:@","];

コードでは、まず、次の行が間違っています。

NSString *temp = [[matchArray objectAtIndex: i] componentsSeparatedByString: @","]; 
+0

私は詳細を教えてくれます。私は適切なものが得られません。このコードを書く方法を知っている友人を助けてください。 – Rocky

+0

確かな仲間です。この特定の行のエラーは、 'componentsSeparatedByString'の出力がNSStringではなくNSArrayであることです。これについての詳細はNSStringクラスのリファレンスを見てください。 – Madhu

+0

NSArray * arr = [someString componentsSeparatedByString:@ "、"];コンポーネントSeperateByString関数がNSArrayオブジェクトを返すことを意味します@Madhuの説明はきちんとして清潔です。 –

0

あなたはNSStringののNSArrayのを有効にしようとしている場合は、カンマで区切られた単一の文字列にオブジェクトを、このようにそれを試してみてください。

NSString *temp = [[matchArray objectAtIndex:i] componentsJoinedByString:@","]; 
アレイ上で呼び出され

componentsJoinedByStringから単一の文字列を返します。配列コンポーネント文字列で呼び出さ

componentsSeparatedByStringを使用すると、メソッドのcomponentsSeparatedByStringを呼び出しているインスタンスが無効である場合にuが受信され、エラーが発生した。また(セパレータに応じて)

0

を文字列成分からなる配列を返します。 NSLogを使って既にMAtcharrayを印刷しているので、正しく印刷されているかどうかを確認することをお勧めします。また、要素ごとにアクセスしようとしているので、要素を要素ごとに出力してチェックし、実際に存在するかどうかを確認してください。

関連する問題