簡體   English   中英

終止應用程序-'NSInvalidArgumentException',原因:'-[NSCFString objectForKey:]:無法識別的選擇器已發送到實例

[英]Terminating app - 'NSInvalidArgumentException', reason: '-[NSCFString objectForKey:]: unrecognized selector sent to instance

我在有人創建的iOS應用中有以下代碼。 但是,應用程序的這一部分會中斷並使其崩潰。

   if([[dictHomeSettings allKeys] containsObject:@"notify_url"]) {
        NSString *notifyUrl = [dictHomeSettings objectForKey:@"notify_url"];
        if(notifyUrl.length>0) {
            dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
            dispatch_async(queue, ^(void) {
//                    //  You may want to cache this explicitly instead of reloading every time.
//                    NSData *notifyData = [NSData dataWithContentsOfURL:[NSURL URLWithString:notifyUrl]];
//                    NSError* error;
//                    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:notifyData
//                                                                         options:kNilOptions
//                                                                           error:&error];

                XMLDictionaryParser *xmlParser = [XMLDictionaryParser new];
                NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:notifyUrl]];
                NSDictionary *aDict = [xmlParser dictionaryWithParser:parser];

                dispatch_async(dispatch_get_main_queue(), ^{
                    //NSLog(@"myNsArray : %@",aDict);
                    if([[aDict allKeys] containsObject:@"Notification"]) {
                        NSArray *array = [aDict objectForKey:@"Notification"];
                        if(array.count>0) {
                            [Common deletePreviousLocalNotifications];
                            for(NSDictionary *dictNotification in array) {
                                NSDateFormatter *dateFormatter = [NSDateFormatter new];
                                [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

                                if([Common compareDate:[dictNotification objectForKey:@"StartTime"] isGreaterThanOrEqualDate:[dateFormatter stringFromDate:[NSDate date]]]) {
                                    NSLog(@"adding notification : %@",dictNotification);
                                    [Common addLocalNotificationAtDateTime:[dateFormatter dateFromString:[dictNotification objectForKey:@"StartTime"]] AlertBody:[dictNotification objectForKey:@"Message"] UserInfo:[NSDictionary dictionaryWithObjectsAndKeys:[dictNotification objectForKey:@"URL"], @"URL", nil]];
                                }
                            }
                        }
                    }
                });
            });

您正在嘗試在NSString對象上調用“ objectForKey”。 請檢查您假定為NSDictionary對象的對象是否實際上是NSDictionary對象實例。

顯然,您試圖在NSString對象上調用objectForKey 如圖所示[dictNotification objectForKey:@"StartTime"]是一個Number值,但您假設它是一個字符串(對此我不確定)。 因此,您在此通話中遇到了error

[Common compareDate:(Number *) isGreaterThanOrEqualDate:(NSString *)];

您可以在[NSObject doesNotRecognizeSelector:]上設置帶有此符號的Symbolic breakpoint ,以方便地debug代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:-[__ NSCFString方案]:無法識別的選擇器已發送到實例 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[__ NSCFString size]:無法識別的選擇器已發送到實例 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[__ NSArrayM objectForKey:]:無法識別的選擇器已發送至實例 'NSInvalidArgumentException',原因:'-[__ NSCFString encodeString:]:無法識別的選擇器已發送到實例 'NSInvalidArgumentException',原因:'-[__ NSCFString objectAtIndex:]:無法識別的選擇器已發送到實例 UIPickerView NSInvalidArgumentException',原因:“-[__ NSCFString超級視圖]:無法識別的選擇器已發送到實例 NSInvalidArgumentException - [__ NSCFString unsignedLongLongValue]:發送到實例的無法識別的選擇器 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[__ NSCFType next]:無法識別的選擇器已發送至實例' 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[__ NSCFArray length]:無法識別的選擇器已發送到實例 ***由於未捕獲的異常“ NSInvalidArgumentException”而終止應用程序,原因:“-[__ NSDictionaryM名稱]:無法識別的選擇器已發送到實例
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM