如何理解Web服务答案中的字符串或数组

hiw*_*dls 0 iphone objective-c nsarray ios

我从Web服务获得数组值.这个数组是1个或多于1个元素的数组.如果tempArra是1个维数的数组然后如果我想将数组中的数据传输到另一个数组(garbageDatesFor01)那么我得到错误

EDIT: returning to the web service responses in 2 ways

RESPONSE 1

(
    (
    "2011-08-03",
    "2011-08-17"
    )
)

OR

RESPONSE 2
2011-08-04

NSArray *garbageDatesFor01=[[NSArray alloc] initWithArray:tempArr];

2011-08-26 18:43:35.689 AOK[1846:207] -[NSCFString count]: unrecognized selector sent to instance 0x990d8f0
2011-08-26 18:43:35.691 AOK[1846:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString count]: unrecognized selector sent to instance 0x990d8f0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x015d25a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01726313 objc_exception_throw + 44
    2   CoreFoundation                      0x015d40bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x01543966 ___forwarding___ + 966
    4   CoreFoundation                      0x01543522 _CF_forwarding_prep_0 + 50
    5   CoreFoundation                      0x01535d87 -[NSArray initWithArray:] + 39
    6   TwenteMilieu                        0x0001323a -[ForgottenContainerT1 connectionDidFinishLoading:] + 3750
    7   Foundation                          0x00113112 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 108
    8   Foundation                          0x0011306b _NSURLConnectionDidFinishLoading + 133
    9   CFNetwork                           0x0117148e _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 220
    10  CFNetwork                           0x0123c6e1 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 293
    11  CFNetwork                           0x01167c80 _ZN19URLConnectionClient13processEventsEv + 100
    12  CFNetwork                           0x01167acf _ZN17MultiplexerSource7performEv + 251
    13  CoreFoundation                      0x015b38ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    14  CoreFoundation                      0x0151188b __CFRunLoopDoSources0 + 571
    15  CoreFoundation                      0x01510d86 __CFRunLoopRun + 470
    16  CoreFoundation                      0x01510840 CFRunLoopRunSpecific + 208
    17  CoreFoundation                      0x01510761 CFRunLoopRunInMode + 97
    18  GraphicsServices                    0x01b411c4 GSEventRunModal + 217
    19  GraphicsServices                    0x01b41289 GSEventRun + 115
    20  UIKit                               0x0037fc93 UIApplicationMain + 1160
    21  TwenteMilieu                        0x00002644 main + 102
    22  TwenteMilieu                        0x000025d5 start + 53
)
terminate called after throwing an instance of 'NSException'
Current language:  auto; currently objective-c
Run Code Online (Sandbox Code Playgroud)

ama*_*ttn 5

重要的是:

2011-08-26 18:43:35.689 TwenteMilieu[1846:207] -[NSCFString count]: unrecognized selector sent to instance 0x990d8f0
Run Code Online (Sandbox Code Playgroud)

这意味着你正在调用count一个字符串.您认为是一个数组的对象实际上是一个字符串.

从查看代码,tempArr可以是数组或字符串.试试这个:

if ([tempArr isKindOfClass:[NSArray class]])
{
    // Handle array case
}
else if ([tempArr isKindOfClass:[NSString class]])
{
    // Handle string case
}
Run Code Online (Sandbox Code Playgroud)

将名称更改tempArr为其他内容(如tempResponse或类似名称)可能是个好主意.