NSDictionary
是 Objective-C 中的一个类,用于存储键值对集合。每个键都是唯一的,且必须是不可变对象(如 NSString
)。值可以是任意对象。NSDictionary
是不可变的,这意味着一旦创建,就不能添加、删除或修改其中的键值对。
NSDictionary
本身不是线程安全的,但可以通过 NSCache
或在多线程环境中进行适当的同步来保证安全。NSMutableDictionary
允许在运行时添加、删除或修改键值对,适用于需要动态更新数据的场景。// 创建一个不可变字典
NSDictionary *dict = @{
@"name": @"Alice",
@"age": @30,
@"city": @"New York"
};
// 读取字典中的值
NSString *name = dict[@"name"];
NSNumber *age = dict[@"age"];
NSString *city = dict[@"city"];
NSLog(@"Name: %@, Age: %@, City: %@", name, age, city);
// 创建一个可变字典
NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:@{
@"name": @"Bob",
@"age": @25,
@"city": @"Los Angeles"
}];
// 修改字典中的值
mutableDict[@"age"] = @26;
[mutableDict setObject:@"Chicago" forKey:@"city"];
NSLog(@"Name: %@, Age: %@, City: %@", mutableDict[@"name"], mutableDict[@"age"], mutableDict[@"city"]);
当尝试读取一个不存在的键时,NSDictionary
会返回 nil
。
NSString *nonExistentKey = dict[@"nonExistentKey"]; // 返回 nil
可以使用 objectForKey:
方法结合条件判断来检查键是否存在。
if (dict[@"nonExistentKey"] != nil) {
NSLog(@"Key exists");
} else {
NSLog(@"Key does not exist");
}
或者使用 allKeys
方法来检查:
if ([dict.allKeys containsObject:@"nonExistentKey"]) {
NSLog(@"Key exists");
} else {
NSLog(@"Key does not exist");
}
在将 JSON 数据转换为字典时,可能会遇到解析错误。可以使用 NSJSONSerialization
类来处理这些错误。
NSError *error = nil;
NSData *jsonData = [@"{\"name\":\"Alice\",\"age\":30}" dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
if (error) {
NSLog(@"JSON parsing error: %@", error);
} else {
NSLog(@"Parsed dictionary: %@", dict);
}
通过这种方式,可以捕获并处理 JSON 解析过程中可能出现的错误,确保程序的健壮性。
没有搜到相关的文章