У меня есть некоторые проблемы с созданием NSString
-представления (JSON-string) NSDictionary
с использованием NSJSONSerialization
. Раньше я использовал JSONKit, но, поскольку его вид устарел в iOS9 (и сбой), я переключился на NSJSONSerialization
.NSJSONSerialization создает мусор
Это мой код:
// `userSettings` will be of type NSMutableDictionary*
NSData* data= [NSJSONSerialization dataWithJSONObject:userSettings options:0 error:&error];
NSString* settingsString= [NSString stringWithUTF8String:data.bytes];
currentUser.settings= settingsString; // NSString* property
Теперь, время от времени, этот код работает, но иногда settingsString
будет nil
. И когда я инспектировать объект данных в отладчике, то bytes
свойство показывает JSON-строку с последующим некоторым случайным мусором, как это:
1 = 0x00007ff1ba814000 "{\"residua
...
lculatePlanned\":\"0\",\"wizardUserId\":\"\"}UITextColor\x91UISystemColorName\x94UIBaselineAdjustment\x8cUISystemFont\x89NS.intval\x8eUIShadowOffset\x94UIAutoresizeSubviews\x8dUIContentMode\x85NSRGB\x8aUIFontName\x8bUITextLabel\x8eNSInlinedValue\x91UIDetailTextLabel\x99UIUserInteractionDisabled\x9dUITableCellBackgroundColorSet\x94UINibEncoderEmptyKey\x87NSWhite\x8cNSColorSpace\x8fUITextAlignment\xa3UINibAccessibilityConfigurationsKey\x92UIAutoresizingMask\x99UIProxiedObjectIdentifier\x87UIAlpha\x87UIWhite\x9aUIFontDescriptorAttributes\x8cUIFontTraits\x86NSSize\x95UIColorComponentCount\x91UIMinimumFontSize\x86UIText\x96UIMultipleTouchEnabled\x8dUIDestination\x94UIMi..."
^start of garbage after end of dictionary
Что я делаю неправильно?
Лучше никогда не преобразовать данные в NSString вообще. NSData будет работать отлично. И JSON не гарантированно будет UTF-8 в любом случае. – gnasher729
Может быть веская причина: я делаю это иногда во время отладки. – zaph
Спасибо, кажется, работает :) – user826955