0

私は3つNSMutableArrayのsを持っています: _parssedArrayOfName, _parssedArrayOfbirthdate,_CopyOFSelectedFaceBookFriends

以下_parssedArrayOfNameのような名前がたくさんあります

2013-03-07 13:15:40.003 birthdate reminder 2[1102:15803] asdas{
        (
        "Nishith Shah",
        "Rupal Shah",
        "Viral Nagori",
        "Malay Shah",
        "Heather Joy",
        "Jatin Patel",
        "Bhushan H Trivedi",
        "Umang Patel",
        "Harshal Arolkar",
        "Nida Shaikh",
        "Yuriko Ramirez",
        "Aysu Can",
        "Bhargav Khatana",
        "Rahul Vador",
        "Viral Dave",

_parssedArrayOfbirthdate以下のような生年月日があります

13-03-07 13:15:29.833 birthdate reminder 2[1102:15803]  this is what im here(
        (
        "<null>",
        "07/27",
        "06/11/1980",
        "08/22/1990",
        "<null>",
        "03/17/1985",
        "<null>",
        "10/17/1989",
        "<null>",
        "07/20",
        "12/08",
        "04/14/1992",
        "10/16",
        "<null>",

_CopyOFSelectedFaceBookFriends Anand Kapadiyaと言うだけで、ユーザーが選択した友達のリストです

名前にすべての名前と出生率NSDictionaryをキーとして追加し、生年月日を値として追加してから、次を使用してこの辞書からanand kapadiyaの生年月日を取得したいObjectForKey:

しかし、私はnull値を取得しています私のコードは以下の通りですplzは私を助けてください

注: 異なる配列の生年月日と名前の数は同じであり、選択された配列値は常に名前配列にあります

注2:この問題の理由はありますか? セレクタ名では "" を使用しませんが、名前配列ではすべての名前に "" を使用します

注 3: 誕生日の配列に null 値が含まれていることがわかるように、問題になる可能性がありますか?

NSArray *objArr = [[NSArray alloc] initWithArray:_parssedArrayOfbirthdate];
NSArray *keyArr =[[NSArray alloc] initWithArray:_parssedArrayOfName];
NSArray *selector =[[NSArray alloc] initWithArray:_CopyOFSelectedFaceBookFriends];     NSDictionary *dic = [[[NSDictionary alloc] autorelease] initWithObjects:objArr forKeys:keyArr];
NSLog(@"asdas%@",dic.description);
 NSMutableArray *matches = [NSMutableArray array];
 for (NSString *key in selector) {
 NSLog(@" see it%@",key);
  NSMutableArray *array1 = [dic objectForKey:key];
        NSLog(@" matched%@",array1);
        [matches addObject:array1];
        NSLog(@" matched%@",matches);
4

1 に答える 1

0

あなたの質問とこのコードは非常に理解しにくいものです。ただし、問題は、キー文字列が常に dic 辞書の有効なキーを表しているとは限らないことだと思います。セレクター配列のどの要素が有効なキーであるかを確認しようとしている場合は、最初に if ステートメントを使用してそれらが存在することを確認する必要があります。

コードには自動解放もありますが、すべてのメモリ管理は ARC で処理する必要があります。

これを試して:

NSArray *birthdates = [[NSArray alloc] initWithArray:_parssedArrayOfbirthdate];
NSArray *names =[[NSArray alloc] initWithArray:_parssedArrayOfName];
NSArray *fbFriends =[[NSArray alloc] initWithArray:_CopyOFSelectedFaceBookFriends];    
NSMutableArray *matches = [[NSMutableArray alloc] initWithCapacity:1];    

NSDictionary *birthdayDictionary = 
[[NSDictionary alloc] initWithObjects:birthdates forKeys:names];

NSLog(@"asdas%@",birthdayDictionary.description);
NSStrging *birthday;
for (NSString *friend in fbFriends) {
    NSLog(@"see it %@",friend);
    if ([birthdayDictionary objectForKey:friend])
    {
        NSLog(@"matched %@",birthday);
        [matches addObject:birthday];
        NSLog(@"matched %@",matches);
    }
}
于 2013-03-07T08:24:34.763 に答える