2015-10-29 132 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:

相關問題