이 함수가 대체 뭔 값을 준다는건지 모르겠어서 NSDictionary 를 찾아보니
package com.dd.plist;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class NSDictionary extends NSObject implements Map<String, NSObject> {
private HashMap<String, NSObject> dict = new LinkedHashMap();
public HashMap<String, NSObject> getHashMap() {
return this.dict;
}
public NSObject objectForKey(String key) {
return (NSObject) this.dict.get(key);
}
public void put(String key, Object obj) {
this.dict.put(key, NSObject.wrap(obj));
}
public int size() {
return this.dict.size();
}
public boolean isEmpty() {
return this.dict.isEmpty();
}
public boolean containsKey(Object key) {
return this.dict.containsKey(key);
}
public boolean containsValue(Object value) {
return this.dict.containsValue(NSObject.wrap(value));
}
public NSObject get(Object key) {
return (NSObject) this.dict.get(key);
}
public void putAll(Map<? extends String, ? extends NSObject> values) {
for (Entry<String, NSObject> entry : values.entrySet()) {
put((String) entry.getKey(), (NSObject) entry.getValue());
}
}
public NSObject put(String key, NSObject obj) {
return (NSObject) this.dict.put(key, obj);
}
public NSObject put(String key, String obj) {
return put(key, new NSString(obj));
}
public NSObject put(String key, long obj) {
return put(key, new NSNumber(obj));
}
public NSObject put(String key, double obj) {
return put(key, new NSNumber(obj));
}
public NSObject put(String key, boolean obj) {
return put(key, new NSNumber(obj));
}
public NSObject put(String key, Date obj) {
return put(key, new NSDate(obj));
}
public NSObject put(String key, byte[] obj) {
return put(key, new NSData(obj));
}
public NSObject remove(String key) {
return (NSObject) this.dict.remove(key);
}
public NSObject remove(Object key) {
return (NSObject) this.dict.remove(key);
}
public void clear() {
this.dict.clear();
}
public Set<String> keySet() {
return this.dict.keySet();
}
public Collection<NSObject> values() {
return this.dict.values();
}
public Set<Entry<String, NSObject>> entrySet() {
return this.dict.entrySet();
}
public boolean containsKey(String key) {
return this.dict.containsKey(key);
}
public boolean containsValue(NSObject val) {
return this.dict.containsValue(val);
}
public boolean containsValue(String val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSString.class) && ((NSString) o).getContent().equals(val)) {
return true;
}
}
return false;
}
public boolean containsValue(long val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSNumber.class)) {
NSNumber num = (NSNumber) o;
if (num.isInteger() && ((long) num.intValue()) == val) {
return true;
}
}
}
return false;
}
public boolean containsValue(double val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSNumber.class)) {
NSNumber num = (NSNumber) o;
if (num.isReal() && num.doubleValue() == val) {
return true;
}
}
}
return false;
}
public boolean containsValue(boolean val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSNumber.class)) {
NSNumber num = (NSNumber) o;
if (num.isBoolean() && num.boolValue() == val) {
return true;
}
}
}
return false;
}
public boolean containsValue(Date val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSDate.class) && ((NSDate) o).getDate().equals(val)) {
return true;
}
}
return false;
}
public boolean containsValue(byte[] val) {
for (NSObject o : this.dict.values()) {
if (o.getClass().equals(NSData.class) && Arrays.equals(((NSData) o).bytes(), val)) {
return true;
}
}
return false;
}
public int count() {
return this.dict.size();
}
public boolean equals(Object obj) {
return obj.getClass().equals(getClass()) && ((NSDictionary) obj).dict.equals(this.dict);
}
public String[] allKeys() {
return (String[]) this.dict.keySet().toArray(new String[0]);
}
public int hashCode() {
return (this.dict != null ? this.dict.hashCode() : 0) + 581;
}
void toXML(StringBuilder xml, int level) {
indent(xml, level);
xml.append("<dict>");
xml.append(NSObject.NEWLINE);
for (String key : this.dict.keySet()) {
NSObject val = objectForKey(key);
indent(xml, level + 1);
xml.append("<key>");
if (key.contains("&") || key.contains("<") || key.contains(">")) {
xml.append("<![CDATA[");
xml.append(key.replaceAll("]]>", "]]]]><![CDATA[>"));
xml.append("]]>");
} else {
xml.append(key);
}
xml.append("</key>");
xml.append(NSObject.NEWLINE);
val.toXML(xml, level + 1);
xml.append(NSObject.NEWLINE);
}
indent(xml, level);
xml.append("</dict>");
}
void assignIDs(BinaryPropertyListWriter out) {
super.assignIDs(out);
for (Entry<String, NSObject> entry : this.dict.entrySet()) {
new NSString((String) entry.getKey()).assignIDs(out);
((NSObject) entry.getValue()).assignIDs(out);
}
}
void toBinary(BinaryPropertyListWriter out) throws IOException {
out.writeIntHeader(13, this.dict.size());
Set<Entry<String, NSObject>> entries = this.dict.entrySet();
for (Entry<String, NSObject> entry : entries) {
out.writeID(out.getID(new NSString((String) entry.getKey())));
}
for (Entry<String, NSObject> entry2 : entries) {
out.writeID(out.getID((NSObject) entry2.getValue()));
}
}
public String toASCIIPropertyList() {
StringBuilder ascii = new StringBuilder();
toASCII(ascii, 0);
ascii.append(NEWLINE);
return ascii.toString();
}
public String toGnuStepASCIIPropertyList() {
StringBuilder ascii = new StringBuilder();
toASCIIGnuStep(ascii, 0);
ascii.append(NEWLINE);
return ascii.toString();
}
protected void toASCII(StringBuilder ascii, int level) {
indent(ascii, level);
ascii.append(ASCIIPropertyListParser.DICTIONARY_BEGIN_TOKEN);
ascii.append(NEWLINE);
String[] keys = (String[]) this.dict.keySet().toArray(new String[0]);
for (String key : keys) {
NSObject val = objectForKey(key);
indent(ascii, level + 1);
ascii.append("\"");
ascii.append(NSString.escapeStringForASCII(key));
ascii.append("\" =");
Class<?> objClass = val.getClass();
if (objClass.equals(NSDictionary.class) || objClass.equals(NSArray.class) || objClass.equals(NSData.class)) {
ascii.append(NEWLINE);
val.toASCII(ascii, level + 2);
} else {
ascii.append(" ");
val.toASCII(ascii, 0);
}
ascii.append(ASCIIPropertyListParser.DICTIONARY_ITEM_DELIMITER_TOKEN);
ascii.append(NEWLINE);
}
indent(ascii, level);
ascii.append(ASCIIPropertyListParser.DICTIONARY_END_TOKEN);
}
protected void toASCIIGnuStep(StringBuilder ascii, int level) {
indent(ascii, level);
ascii.append(ASCIIPropertyListParser.DICTIONARY_BEGIN_TOKEN);
ascii.append(NEWLINE);
String[] keys = (String[]) this.dict.keySet().toArray(new String[0]);
for (String key : keys) {
NSObject val = objectForKey(key);
indent(ascii, level + 1);
ascii.append("\"");
ascii.append(NSString.escapeStringForASCII(key));
ascii.append("\" =");
Class<?> objClass = val.getClass();
if (objClass.equals(NSDictionary.class) || objClass.equals(NSArray.class) || objClass.equals(NSData.class)) {
ascii.append(NEWLINE);
val.toASCIIGnuStep(ascii, level + 2);
} else {
ascii.append(" ");
val.toASCIIGnuStep(ascii, 0);
}
ascii.append(ASCIIPropertyListParser.DICTIONARY_ITEM_DELIMITER_TOKEN);
ascii.append(NEWLINE);
}
indent(ascii, level);
ascii.append(ASCIIPropertyListParser.DICTIONARY_END_TOKEN);
}
}
이렇게 되있는데.... NSDictionary 가 뭔지 모르겠어여 ㅠㅠㅠ
한줄평이라도 좋으니깐 도움좀 줘 ㅠ
NSDictionary면 오브젝트c아닌가
ns붙은건 애플쪽임
https://developer.apple.com/documentation/foundation/nsdictionary
스위프트네
소스보니 자바로 비슷하게만든거같은데 해쉬맵 커스텀인거같은데
키-값으로 이루어진 딕셔너리를 객체에 설정한다는 니니용
옵젝씨 nsdictionary를 자바로 짠듯? 맵이라고 보면됨