2014-09-23 3 views
0

Я трудно понять, как получить доступ к значениям в массивах, используя Objective-C Мой массив выглядит следующим образом:Доступ к значениям, указанным в IOS Массивы и словари

bualadhBos = @[ 
       @{ @"time":[NSNumber numberWithInt:2875], 
        @"line" : @"Muid uilig ag bualadh bos, "}, 
       @{ @"time":[NSNumber numberWithInt:3407], 
        @"line": @"Muid uilig ag tógáil cos, "}, 
       @{ @"time":[NSNumber numberWithInt:3889], 
        @"line": @"Muid ag déanamh fead ghlaice, "}, 
       @{ @"time": [NSNumber numberWithInt:4401], 
        @"line": @"Muid uilig ag geaibíneacht. "}, 
       @{ @"time":[NSNumber numberWithInt:4900], 
        @"line": @"Buail do ghlúine 1, 2, 3, "}, 
       @{ @"time":[NSNumber numberWithInt:5383], 
        @"line": @"Buail do bholg mór buí, "}, 
       @{ @"time" :[NSNumber numberWithInt:5910], 
        @"line": @"Léim suas, ansin suigh síos, "}, 
       @{ @"time": [NSNumber numberWithInt:6435], 
        @"line": @"Seasaigh suas go hard arís. "}, 
       @{ @"time":[NSNumber numberWithInt:6942], 
        @"line": @"Sín amach do dhá lamh, "}, 
       @{ @"time": [NSNumber numberWithInt:7430], 
        @"line": @"Anois lig ort go bhfuil tú ' snámh. "}, 
       @{ @"time": [NSNumber numberWithInt:7934], 
        @"line": @"Amharc ar dheis, ansin ar chlé, "}, 
       @{ @"time":[NSNumber numberWithInt:8436], 
        @"line": @"Tóg do shúile go dtí an spéir. "}, 
       @{ @"time": [NSNumber numberWithInt:8940], 
        @"line": @"Tiontaigh thart is thart arís, "}, 
       @{ @"time": [NSNumber numberWithInt:9436], 
        @"line": @"Cuir síos do dhá lámh le do thaobh, "}, 
       @{ @"time": [NSNumber numberWithInt:9942], 
        @"line": @"Lámha suas is lúb do ghlúin, "}, 
       @{ @"time": [NSNumber numberWithInt:10456], 
        @"line": @"Suigí síos anois go ciúin. "}, 
       ]; 

И я итерация по массиву, как так :

[player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:NULL usingBlock:^(CMTime time){ 
     NSTimeInterval seconds = CMTimeGetSeconds(time); 
     for (NSObject *item in bualadhBos) { 
      NSLog(@"Seconds: %qi", seconds); 
      NSLog(@"item: %qi", [item valueForKey:@"time"]);     
     } 

Выход, который я получаю от этого, как это:

2014-09-23 21:43:03.485 IciApp[1001:239870] item: 1683166570951200528 
2014-09-23 21:43:03.486 IciApp[1001:239870] Seconds: 4617316992953529383 
2014-09-23 21:43:03.486 IciApp[1001:239870] item: 1683489071455597664 
2014-09-23 21:43:03.487 IciApp[1001:239870] Seconds: 4617316992953529383 
2014-09-23 21:43:03.488 IciApp[1001:239870] item: 1683292602471563696 
2014-09-23 21:43:03.488 IciApp[1001:239870] Seconds: 4617316992953529383 

Я не уверен, почему строки элементов не распечатывают значения, которые находятся в массиве? Или это, и я просто не понимаю, как он преобразует число? Мне кажется, что он печатает идентификатор объекта, а не значение времени. Я надеюсь, что 2875 напечатано как первое значение для элемента.

Кроме того, меня тоже смущает значение Seconds. Это значение в миллисекундах?

Большое спасибо

ответ

1

Вы протоколирование NSNumber указателя как long long. Попробуйте следующее:

for (NSDictionary *item in bualadhBos) { 
    NSLog(@"Seconds: %f", seconds); 
    NSNumber *time = item[@"time"]; 
    NSLog(@"time: %qi", [time longLongValue]); 
} 
+0

Спасибо, это мне очень помогло. Просто нужно выяснить, что такое Секунды. Очень смутно, что это такое большое количество. –

+0

Я только что обновил свой ответ. Я изменяю, как «секунды» регистрируются. 'NSTimeInterval' - это' double', а не 'long long'. Посмотрите, поможет ли это. – rmaddy

+0

, что дает больше смысла. Мне нужно многому научиться в Objective-C –

 Смежные вопросы

  • Нет связанных вопросов^_^