2015-10-29 100 views
1
NSMutableDictionary *elementsMDic = [NSMutableDictionary new]; 
for (int i = 0 ; i < maxRssiMArray.count; i++) { 

    NSString *majorStr = [NSString stringWithFormat:@"%@",[maxRssiMArray[i]valueForKey:@"major"]]; 
    NSString *minorStr = [NSString stringWithFormat:@"%@",[maxRssiMArray[i]valueForKey:@"minor"]]; 
    NSInteger rssiInt = [[maxRssiMArray[i] valueForKey:@"rssi"] intValue]; 

    [elementsMDic setValue:@"guest" forKey:@"user_name"]; 
    [elementsMDic setValue:majorStr forKey:@"major"]; 
    [elementsMDic setValue:minorStr forKey:@"minor"]; 
    [elementsMDic setValue:@(rssiInt) forKey:@"rssi"]; 
    [elementsMDic setValue:submitTime forKey:@"submit_time"]; 
    [elementsMDic setValue:HERE_BEACON_UUID forKey:@"beacon_uuid"]; 

    [maxRssiDicMArray addObject:elementsMDic]; 
} 
NSLog(@"%@",maxRssiDicMArray); 

我得到的ObjectiveC NSMutableArray中添加的NSMutableDictionary问题

{ 
    "beacon_uuid" = "myUUID"; 
    major = 65535; 
    minor = 65535; 
    rssi = "-95"; 
    "submit_time" = "2015-10-29_17:45:56"; 
    "user_name" = guest; 
}, 

我的问题是,为什么有些东西得到 “” 别人拿不出 “” 我想应该是这样的

 { 
    "beacon_uuid" = "myUUID"; 
    "major" = 65535; 
    "minor" = 65535; 
    "rssi" = -95; 
    "submit_time" = "2015-10-29_17:45:56"; 
    "user_name" = "guest"; 
}, 

,因为我的钥匙都是NSString,而我的主要Str和minorStr都是NSString,也是

请告诉我为什么以及如何解决原因!

+0

不是一个坏问题,但肯定代码是坏的?您枚举一个数组并重复将值设置为单个字典。这是不对的。同样你对'stringWithFormat'和'valueForKey'的使用也是错误的;例如,这是正确的(和简洁):'NSString * majorStr = maxRssiMArray [i] [@“major”];'。 – trojanfoe

+0

对于只有字母且容易理解为字符串对象的“单个单词”,它不需要引号。但[对象描述]不是一个问题。 – Larme

回答

1

你所得到的是控制台输出,它利用它所放置对象的描述属性。根据苹果文档(https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/#//apple_ref/occ/instp/NSDictionary/description),这是为了便于阅读,而不是为了序列化对象。所以你看到的报价只是为了帮助你阅读。具有空格或其他特定字符(如下划线)的字符串值可以用引号括起来,没有那些字符串值则不会。 您无法真正解决此问题,因为该功能按预期工作。既然你没有告诉我们你要做什么,建议替代品就成了猜谜游戏。如果您需要可以写入文件并稍后检索的数据,则应查看属性列表 (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html#//apple_ref/doc/uid/10000048i) 或NSArchiver(https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArchiver_Class/index.html)。如果这是打算通过网络发送,也许NSJSONSerialization做你所需要的? https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSJSONSerialization_Class/

0

本字典是正确的,这只是NSLog

显示的行为如果键或值只包含字母数字字符,不显示双引号。

NSDictionary *dict = @{@"key" : @"value"}; 
NSLog(@"%@", dict); 

{key = value; }

否则,如果键或值包含空格,下划线或其他特殊字符

NSDictionary *dict = @{@"key 1" : @"value 1"}; 
NSLog(@"%@", dict); 

双引号的显示方式。

{“key 1”=“value 1”; }

PS:不要使用valueForKey:/setValue:forKey:拿到字典/设定值。
指定的方法是objectForKey:/setObject:forKey:

相关问题