답변:
NSDictionary-> NSData :
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:yourDictionary forKey:@"Some Key Value"];
[archiver finishEncoding];
[archiver release];
// Here, data holds the serialized version of your dictionary
// do what you need to do with it before you:
[data release];
NSData-> NSDictionary
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [[unarchiver decodeObjectForKey:@"Some Key Value"] retain];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
NSCoding을 준수하는 모든 클래스에서이를 수행 할 수 있습니다.
NSJSONSerialization을 사용하십시오.
NSDictionary *dict;
NSData *dataFromDict = [NSJSONSerialization dataWithJSONObject:dict
options:NSJSONWritingPrettyPrinted
error:&error];
NSDictionary *dictFromData = [NSJSONSerialization JSONObjectWithData:dataFromDict
options:NSJSONReadingAllowFragments
error:&error];
최신은 반환 id
하므로 캐스팅 한 후에 반환 된 객체 유형을 확인하는 것이 좋습니다 (여기서는 NSDictionary로 캐스팅했습니다).
Swift 2 에서는 다음과 같이 할 수 있습니다 :
var dictionary: NSDictionary = ...
/* NSDictionary to NSData */
let data = NSKeyedArchiver.archivedDataWithRootObject(dictionary)
/* NSData to NSDictionary */
let unarchivedDictionary = NSKeyedUnarchiver.unarchiveObjectWithData(data!) as! NSDictionary
에서 스위프트 3 :
/* NSDictionary to NSData */
let data = NSKeyedArchiver.archivedData(withRootObject: dictionary)
/* NSData to NSDictionary */
let unarchivedDictionary = NSKeyedUnarchiver.unarchiveObject(with: data)
Any?
유형입니다. 그러나에서 (으) NSDictionary
로 변환하는 중에 오류가 발생 했습니다 NSData
. 그래서 나는 당신의 코드를 시도했습니다. 그것은 작동하지 않았다.
NSData에서 NSDictionary
http://www.cocoanetics.com/2009/09/nsdictionary-from-nsdata/
NSDictionary를 NSData로
NSPropertyListSerialization 클래스를 사용할 수 있습니다. 그 방법을 살펴보십시오.
+ (NSData *)dataFromPropertyList:(id)plist format:(NSPropertyListFormat)format
errorDescription:(NSString **)errorString
지정된 속성 목록이 지정된 형식으로 포함 된 NSData 객체를 반환합니다.
이것을 시도하십시오
NSError *error;
NSDictionary *responseJson = [NSJSONSerialization JSONObjectWithData:webData
options:NSJSONReadingMutableContainers
error:&error];
response
,하지 responce
. 이 문제를 해결했습니다.