2012-05-05 6 views
0

NSDictionaryの配列をファイルに保存します。そこで、NSArrayからNSStringに変換する関数を記述します。しかし、私は非常に奇妙な問題を抱えています。ここに私のコードです。 " - " 私を得るにはどうすればよい@NSStringの 'componentsSeparatedByString'メソッドから奇妙な出力が得られました

2012-05-05 23:57:35.113 SoundRecognizer[147:707] (
    "new Photo/0", 
    "new Photo/1" 
) 
2012-05-05 23:57:35.118 SoundRecognizer[147:707] new Photo/0 
2012-05-05 23:57:35.123 SoundRecognizer[147:707] -[__NSCFString unsignedIntValue]: unrecognized selector sent to instance 0x1d18c0 

この次の配列から?!:ここ

+ (NSArray *)arrayForString:(NSString*)dataString 
{ 
    NSArray* stringArray = [dataString componentsSeparatedByString:ROW_SEPARATOR]; 
    NSLog(@"%@", stringArray); 
    NSMutableArray* dictionaryArray = [[NSMutableArray alloc] initWithCapacity:0]; 
    for (int i = 0; i < [stringArray count]; i++) 
    { 
     NSString* string = [stringArray objectAtIndex:i]; 
     NSLog(@"%@", string); 
     NSArray* subStrings = [string componentsSeparatedByString:COLUMN_SEPARATOR]; 
     NSDictionary* dic = [[NSDictionary alloc] initWithObjectsAndKeys:[subStrings objectAtIndex:0], PHOTO_NAME, [NSNumber numberWithUnsignedInt:[[subStrings objectAtIndex:1] unsignedIntValue]], PHOTO_SEQ_NO, nil]; 
     [dictionaryArray addObject:dic]; 
    } 
    return dictionaryArray; 
} 

はログです

2012-05-05 23:57:35.113 SoundRecognizer[147:707] (
    "new Photo/0", 
    "new Photo/1" 
) 
+0

渡す文字列とは何ですか?セパレータ定数の値は何ですか? @ " - "はそれと関係がありません。上記のコードでは、if文の前後に同じ値を 'string'に代入します。 – jrturton

+0

@jrturton。申し訳ありませんが、デバッグのために追加していたコード行です。私はdataStringとセパレータについては言及していませんでしたが、私はログにstringArrayを表示しました。そこに@ " - "がないことがわかります。なぜ@ " - "が印刷されるのだろうか? – yoyosir

答えて

2

NSStringにはunsignedIntValueメソッドがありません。代わりにintValueを使用してください。しかし、私はこれのすべての点については分かりません。writeToFile: atomically:を使用して、辞書に配列を書き込むことができます(プロパティリストタイプのみを含む限り)。

+0

ありがとう!場合によってはこのコードが正常に実行されることがあります。 NSStringには、実行時に "unsignedIntValue"というメソッドがあるように、NSStringにいくつかのカテゴリが追加されていると思います(多分NSNumber?) – yoyosir

関連する問題