2016-04-05 4 views
2

У меня есть NSMutableArray выглядит следующим образом. И я хочу передать этот массив другому ViewController и использовать его элементы. Но я смущен тем, как добавлять ключи к каждому элементу. Например, {@"bus_route_key":@"733"}Как добавить ключ к NSMutableArray

Есть ли способ инициализировать массив с помощью клавиш? Или я должен создать NSDictionary для этого?

@[ 
@[ 
    @733, 
    @"Oakleigh - Box Hill via Clayton & Monash University & Mt Waverley", 
    @"Oakleigh Railway Station/Johnson St", 
    @"2016-04-05T11:44:00Z" 
    ], 
@[ 
    @631, 
    @"Southland - Waverley Gardens via Clayton & Monash University", 
    @"Southland Shopping Centre/Karen St", 
    @"2016-04-05T11:46:00Z" 
    ], 
@[ 
    @703, 
    @"Middle Brighton - Blackburn via Bentleigh & Clayton & Monash University (SMARTBUS Service)", 
    @"Luntar Rd/Centre Rd", 
    @"2016-04-05T11:50:00Z" 
    ] 
]; 
+4

Да использовать словарь; массивы не имеют ключей, просто индексов. – trojanfoe

ответ

-1
NSArray *mainArray = @[ 
@[ 
    @733, 
    @"Oakleigh - Box Hill via Clayton & Monash University & Mt Waverley", 
    @"Oakleigh Railway Station/Johnson St", 
    @"2016-04-05T11:44:00Z" 
    ], 
@[ 
    @631, 
    @"Southland - Waverley Gardens via Clayton & Monash University", 
    @"Southland Shopping Centre/Karen St", 
    @"2016-04-05T11:46:00Z" 
    ], 
@[ 
    @703, 
    @"Middle Brighton - Blackburn via Bentleigh & Clayton & Monash University (SMARTBUS Service)", 
    @"Luntar Rd/Centre Rd", 
    @"2016-04-05T11:50:00Z" 
    ] 
]; 

NSMutableArray *newArray = [NSMutableArray array]; 

for (NSArray *arr in mainArray) { 

     NSDictionary *dict = @{ 
           @"key1" : [arr objectAtIndex:0], 
           @"key2" : [arr objectAtIndex:1], 
           @"key3" : [arr objectAtIndex:2] 
           }; 

    [newArray addObject:dict]; 
} 

DLOG(@"New Arr : %@", newArray); 

//you can access by key like this 

for (NSDictionary *dict in newArray) { 

    DLOG(@"%@", [dict valueForKey:@"key1"]); 
    DLOG(@"%@", [dict valueForKey:@"key2"]); 
    DLOG(@"%@", [dict valueForKey:@"key3"]); 
} 

Надеется, что это поможет .. :)

+0

Работает как магия, это именно то, что я хочу. Большое спасибо за вашу помощь!! –

1

Ничего себе, эй, Мельбурнский.

Вы должны иметь NSMutableArray, содержащий NSMutableDictionaries и настройки каждой линии шины более структурированным:

(
    { 
    "route": 733, 
    "line_name": "Oakleigh - Box Hill via Clayton & Monash University & Mt Waverley", 
    "stop": "Oakleigh Railway Station/Johnson St", 
    "time": "2016-04-05T11:44:00Z" 
    }, 

    //Insert other line dictionaries 
) 
+0

hah, melbourne coder это. Спасибо, человек, я уже добавил словари в массив! –

0

На данный момент, ваш NSMutableArray содержит NSArrays. Эти NSArray s должны быть NSDictionary s или NSMutableDictionary s в вашем случае.

Затем вы можете редактировать bus_route_key, например, из первого элемента, как это: [[yourList objectAtIndex:0] setInteger:1337 forKey:@"bus_route_key"] Если вы хотите установить строку, вам нужно использовать setObject

0

вы можете конвертировать ваши NSArray в NSDictionary, как массивы Безразлично» т содержать ключи и значение массива имеет только индексы

+0

Это должен быть комментарий, а не ответ. –

-1

использования ниже строка кода:
NSMutableDictionary * dict2 = [[NSMutableDictionary alloc] initWithObjects: attributeValues ​​forKeys: attributeKeys];

Здесь атрибутValues ​​является значением NSArray значений NSDictionary и attributeKeys является ключом NSArray.

см ниже опорной линии:

http://hayageek.com/nsdictionary-nsmutabledictionary/

NSString * key1 [email protected]"name"; 
NSString * obj1 [email protected]"Hayagreeva"; 
NSString * key2 [email protected]"age"; 
NSNumber * obj2 =[NSNumber numberWithInt:3]; 

//1.Empty dictionary. @{} dictionary representation and it is not for NSMuableDictionary 
NSDictionary * dict1 =[NSDictionary dictionary]; 
NSDictionary * dict2 =[[NSDictionary alloc] init]; 
NSDictionary * dict3 = @{}; 

//2.Dictionary with Single Object and Key 
NSDictionary * dict4 =[NSDictionary dictionaryWithObject:obj1 forKey:key1]; 
NSDictionary * dict5 [email protected]{key1:obj1}; 

//3.Dictionary with Multiple Object and Keys 
//Objects and keys are sequentially terminated with nil 
NSDictionary * dict6 = [NSDictionary 
         dictionaryWithObjectsAndKeys:obj1,key1,obj2,key2,nil]; 

NSDictionary * dict7 =[[NSDictionary alloc] 
         initWithObjectsAndKeys:obj1,key1,obj2,key2,nil] ; 

//3.Dictionary with Multiple Object and Keys 
NSDictionary *dict8 =[NSDictionary 
         dictionaryWithObjects:@[obj1,obj2] 
         forKeys:@[key1,key2]]; 
NSDictionary *dict9 =[[NSDictionary alloc] 
         initWithObjects:@[obj1,obj2] 
         forKeys:@[key1,key2]]; 
NSDictionary * dict10 [email protected]{key1:obj1,key2:obj2}; 

//@[obj1,obj2] is the array representation. dict6,dict7,dict8 are same. 
NSDictionary *dict11 =[[NSDictionary alloc] 
         initWithObjects:[NSArray arrayWithObjects:obj1,obj2,nil] 
         forKeys:[NSArray arrayWithObjects:key1,key2,nil]]; 

//4.Dictionary with another Dictionary 
//@[obj1,obj2] is the array representation. dict6,dict7,dict8 are same. 
NSDictionary *dict12=[NSDictionary dictionaryWithDictionary:dict8]; 
NSDictionary *dict13=[[NSDictionary alloc] initWithDictionary:dict8]; 
0

Мой код поможет вам :)

NSMutableArray *arrTitles = (NSMutableArray *)@[@{ 
    "route": 733, 
    "line_name": "Oakleigh - Box Hill via Clayton & Monash University & Mt Waverley", 
    "stop": "Oakleigh Railway Station/Johnson St", 
    "time": "2016-04-05T11:44:00Z" 
     },@{ 
    "route": 733, 
    "line_name": "Oakleigh - Box Hill via Clayton & Monash University & Mt Waverley", 
    "stop": "Oakleigh Railway Station/Johnson St", 
    "time": "2016-04-05T11:44:00Z" 
    }]; 
Смежные вопросы