Выполнение NSJSONSerialization для следующего json иногда дает мне NSCFString*, а иногда NSTaggedPointerString* для строковых значений. Кто-нибудь знает, почему это так и что NSJSONSerialization использует для определения возвращаемого типа?
jsonData = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&parseError];
{
"UserPermissionsService": {
"ServiceHeader": {},
"UserApplicationPermissions": {
"ApplicationPermissions": {
"ApplicationID": "TEST",
"Permission": [
{
"Locations": [
"00000"
],
"PermissionID": "LOGIN"
},
{
"Locations": [
"00000"
],
"PermissionID": "SALES_REPORT_VIEW"
}
]
}
}
}
}
«LOGIN» возвращается как NSTaggedPointerString*. "SALES_REPORT_VIEW" возвращается как NSCFString*. Это оказывает влияние на последующие процессы, когда я использую и привожу значения.
ОБНОВЛЕНИЕ
Вот что я узнал...
«NSTaggedPointerString возникает, когда все значение может храниться в самом указателе без выделения каких-либо данных».
Здесь есть подробное объяснение...
https://www.mikeash.com/pyblog/friday-qa-2015-07-31-tagged-pointer-strings.html
Поскольку NSTaggedPointerString является подклассом NSString, отображение кавычек/не отображение кавычек никогда не должно быть проблемой для меня, поскольку данные используются.
Спасибо всем, кто прокомментировал. Мне удобно, я понимаю, что делает NSJSONSerialization.