我是IOS/Objective C的新手,想要找出创建集合,迭代它和时间事件的最佳方法。遍历IOS中的NSDictionary和计时事件
我有一系列的歌曲,我希望歌曲的某一行出现在屏幕上,因为音乐在歌曲的正确位置播放。所以我开始做以下事情:我把个别行放入字典中,并在行显示时显示毫秒值。
NSDictionary *bualadhBos = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:2875], @"Muid uilig ag bualadh bos, ",
[NSNumber numberWithInt:3407], @"Muid uilig ag tógáil cos, ",
[NSNumber numberWithInt:3889], @"Muid ag déanamh fead ghlaice, ",
[NSNumber numberWithInt:4401], @"Muid uilig ag geaibíneacht. ",
[NSNumber numberWithInt:4900], @"Buail do ghlúine 1, 2, 3, ",
[NSNumber numberWithInt:5383], @"Buail do bholg mór buí, ",
[NSNumber numberWithInt:5910], @"Léim suas, ansin suigh síos, ",
[NSNumber numberWithInt:6435], @"Seasaigh suas go hard arís. ",
[NSNumber numberWithInt:6942], @"Sín amach do dhá lamh, ",
[NSNumber numberWithInt:7430], @"Anois lig ort go bhfuil tú ' snámh. ",
[NSNumber numberWithInt:7934], @"Amharc ar dheis, ansin ar chlé, ",
[NSNumber numberWithInt:8436], @"Tóg do shúile go dtí an spéir. ",
[NSNumber numberWithInt:8940], @"Tiontaigh thart is thart arís, ",
[NSNumber numberWithInt:9436], @"Cuir síos do dhá lámh le do thaobh, ",
[NSNumber numberWithInt:9942], @"Lámha suas is lúb do ghlúin, ",
[NSNumber numberWithInt:10456], @"Suigí síos anois go ciúin. ", nil
];
那么我想遍历字典,创建一个定时器,将调用负责在textLayer
for (id key in bualadhBos) {
NSTimer *timer;
timer = [[NSTimer scheduledTimerWithTimeInterval:bualadhBos[key] target:self selector:@selector(changeText) userInfo:nil repeats:NO]];
}
-(void)changeText {
// change the text of the textLayer
textLayer.string = @"Some New Text";
}
但是作为改变文本的方法,我开始调试这和检查它是如何工作的,我在调试器中注意到这些项目出现在词典中的顺序已经全部被打乱了。我还担心(我对此不太了解),我正在创建多个定时器,并且可能会有更高效的方法来解决此问题。
任何方向将不胜感激。
参见http://stackoverflow.com/questions/376090/nsdictionary-with-ordered-keys – 2014-09-23 13:50:01
字典是无序的。把你的项目放在一个数组中(你可能需要定义一个“容器”对象),按开始时间排序,然后遍历数组。 – 2014-09-23 15:19:58