2014-10-15 2 views
3

Я хочу читать значения из файла plist как целые числа. У меня есть следующий код:iOS 8 Swift Read Plist

let path = NSBundle.mainBundle().pathForResource("savedState", ofType: "plist") 
let dict = NSDictionary(contentsOfFile: path!) 
let players: AnyObject = String(dict.valueForKey("players") as NSString) 
let level: AnyObject = String(dict.valueForKey("level") as NSString) 
let numPlayers = Int(players as NSNumber) 
let playLevel = Int(level as NSNumber) 

Позвольте игрокам: и пусть уровень: сбой моего приложения. Я знаю, что это должно быть просто - я просто не могу понять, как это сделать.

+0

Ваше использование множественных «игроков» заставляет меня подозревать, что в вашем plist есть более одного игрока. Если да, то у вас, вероятно, есть множество словарей. Предоставление подробностей вашей строки и сообщения о сбоях помогло бы – Paulw11

+0

было бы гораздо полезнее, если вы также покажете нам содержимое файла .plist, потому что этот фрагмент не имеет смысла без модели. – holex

+0

Ошибка: EXC_BREAKPOINT (код = EXC_i386_BPT, subdued = 0x0). Это единственный словарь с одним ключевым игроком. numberOfPlayers, вероятно, будет лучшим ключевым именем. –

ответ

7

Вы можете искать что-то вроде этого:

let path = NSBundle.mainBundle().pathForResource("savedState", ofType: "plist") 
let dict = NSDictionary(contentsOfFile: path!) 
let players = dict.valueForKey("players") as? String 
let level = dict.valueForKey("level") as? String 
let numPlayers = players != nil ? players!.toInt() : 0 
let playLevel = level != nil ? level!.toInt() : 0 

Он пытается читать игроков и уровень из списка свойств в качестве дополнительных строк, а затем, если они не являются нулевыми он устанавливает numPlayers и playLevel их значение Int. Если они nil numPlayers и playLevel установлены в 0. Хотя, если ваши значения plist являются целыми числами, почему бы просто не прочитать их как Ints?

let players = dict.valueForKey("players") as? Int 
let level = dict.valueForKey("level") as? Int 
+0

Читая их, как ints работал отлично! Благодаря! –

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