js/Foundation/NSDictionary.js
'use strict'
import NSObject from '../ObjectiveC/NSObject'
/**
* dummy class for NSKeyedArchiver/Unarchiver
* @access public
* @extends {NSObject}
*/
export default class NSDictionary extends NSObject {
/**
* @access public
* @param {NSCoder} coder -
* @returns {Object} -
*/
static initWithCoder(coder) {
const dict = {}
if(typeof coder._refObj['NS.objects'] !== 'undefined'){
const keys = coder._refObj['NS.keys']
const objects = coder._refObj['NS.objects']
if(!Array.isArray(keys)){
throw new Error('NS.keys must be Array')
}
if(!Array.isArray(objects)){
throw new Error('NS.objects must be Array')
}
if(keys.length !== objects.length){
throw new Error('NS.keys.length !== NS.objects.length')
}
const keyCoder = coder.copy()
keyCoder._refObj = keys
const objCoder = coder.copy()
objCoder._refObj = objects
for(let i=0; i<keys.length; i++){
const key = keyCoder.decodeObjectForKey(i)
const obj = objCoder.decodeObjectForKey(i)
dict[key] = obj
}
}else{
for(let i=0; ; i++){
const objKey = `NS.object.${i}`
const keyKey = `NS.key.${i}`
if(typeof coder._refObj[objKey] === 'undefined'){
break
}
const key = coder.decodeObjectForKey(keyKey)
const obj = coder.decodeObjectForKey(objKey)
dict[key] = obj
}
}
return dict
}
}