0

文字列をパーツに分割してテーブルに挿入しようとしていますが、どうすればよいですか?

配列の分割でエラーが発生しました: -[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 0x7a421e0

NSArray *BusRoute = alightDesc;
int i;
int count = [BusRoute count];
for (i = 0; i < count; i++)
{  
    NSDictionary *dic = [BusRoute objectAtIndex: i];
    NSDictionary *STEPS = [dic valueForKey:@"STEPS"];            
    NSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"];
    NSLog(@"AlightDesc = %@", AlightDesc);

    NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","];
    NSLog(@"aDescArray = %@", aDescArray);
}

これは私が分割している文字列です。NSLog から取得しました

AlightDesc = (
"Block1",
"Block2",
"Block3"
)

助けてください ありがとう。

4

2 に答える 2

0

NSString *AlightDesc は次のようになります

 NSString *AlightDesc = "Block1,Block2,Block3";
 NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","];

あなたの文字列があなたの言う通りなら

 AlightDesc = ("Block1","Block2","Block3"); 

すでに壊れているため、文字列が問題です。

于 2012-07-23T21:10:41.613 に答える
0

Objective C は厳密に型指定された言語ではありません。あなたが確かに知っているの[STEPS valueForKey:@"AlightDesc"]は、それが(タイプの)オブジェクトを返すということだけidです。あなたが書いたとき、コンパイラは有効なオブジェクト型であるNSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"]ため文句を言いませんでした。NSString *残念ながら、コードに論理エラーがあるため、キーの下に実際に格納されたの@"AlightDesc"NSArray. 他の人が述べたように、NSArray応答しないためcomponentsSeparatedByString:、実行時にエラーが発生します。

これを簡単に修正するには、ロジックを修正します。NSString最初に を格納するか、取得したものを として扱いますNSArray。@janusfidelが述べたように、必要なエントリの文字列を取得するためにNSArray使用することで、テーブルで完全にうまく使用できます。objectAtIndex:

より複雑なケースでは、特定のキーに対して辞書から何を取得するのかがわからない場合があります。その場合、Objective C では、オブジェクトに問い合わせることができます。

id anObject = [STEPS valueForKey:@"AlightDesc"];
if ([anObject isKindOfClass:[NSString class]]) {
    NSString *aString = (NSString *)anObject;
    // Treat as a string ...
} else if ([anObject isKindOfClass:[NSString class]]) {
    // Object is an array ...
于 2012-07-23T22:22:35.233 に答える