NSString作为对象的NSString

时间:2014-08-06 20:07:29

标签: ios nsstring nsdictionary

NSString代表NSDictionary

我创建了这样的字符串:

 NSString * insertionStr = [dictionary description];

现在我想将其转换回NSDictionary

有可能吗?

4 个答案:

答案 0 :(得分:1)

基于问题和评论,我会说... 不......不要这样做NSUserDefaults能够存储对象值,并且可以很好地存储NSDictionary

[[NSUserDefaults standardUserDefaults] setObject: dictionary forKey:@"DetailDict"];
[[NSUserDefaults standardUserDefaults] synchronize];

并将其重新使用

NSDictionary *retrievedDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"DetailDict"];

OR

如果您认为将其保存为字符串,请查看this question,并在检索该值时将字符串转换回Object

答案 1 :(得分:1)

来自setObject:forKey

的NSUserDefaults文档

value参数只能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。对于NSArray和NSDictionary对象,它们的内容必须是属性列表对象。

如果您的词典包含非属性列表对象,则可以将其归档并将其存储到文件中,如果词典中的所有对象都实现NSCoding

答案 2 :(得分:1)

字典表示为键/值对。您可以使用以下单个值创建字典:

NSDictionary *dictionary = @{@"name": @"Mike"};

您还可以存储多个键/值对:

NSDictionary *newDictionary = @{
                                @"firstName": @"Mike",
                                @"lastName": @"Smith"
                               };

稍后如果你想从字典中取回值,你可以使用密钥从中获取值:

NSString *first = newDictionary[@"firstName"];
NSString *last = newDictionary[@"lastName"];

// first will now be @"Mike" and last will be @"Smith"

将字典想象为数组,但不是使用索引(数字)来引用您使用键(字符串)的值。

根据发表的评论,如果你还想存储一系列词典,你可以做到这一点没问题:

NSDictionary *firstDictionary = @{@"key": @"value"};
NSDictionary *secondDictionary = @{@"anotherKey": @"anotherValue"};
NSArray *array = @[firstDictionary, secondDictionary];

答案 3 :(得分:1)

要将字典保存到文件(或其他媒体)并稍后能够恢复,您应该使用JSON或plist格式。

对于JSON,您的数据必须限制为字典,数组,字符串和NSNumbers的组合。对于plist,它必须是其中之一或NSDate或NSData。

对于JSON,您可以使用NSJSONSerialization的方法转换为NSData,然后将数据保存到文件中。要恢复,请将文件加载到NSData并通过NSJSONSerialization运行。

对于plist格式,请使用NSDictionary writeToFiledictionaryWithContentsOfFile方法。

请注意,默认情况下,您获取的对象是不可变的。如果您想要来自JSON的可变对象,JSONObjectWithData上有一个名为NSJSONReadingMutableContainers的选项。使用plists我相信你需要使用更复杂的plist接口(使用简单的NSDictionary接口),允许你指定类似的选项。