मेरे iPhone पर एप्लिकेशन चलाने का प्रयास करते समय मेरी एक त्रुटि है। मुझे समझ में नहीं आ रहा है कि इस मामले में मेरे पास एक शून्य त्रुटि क्यों है

>    Terminating app due to uncaught exception 'NSInvalidArgumentException',<br/>
>    reason: '  setObjectForKey: object cannot be nil (key: device_id)'<br/>
>    First throw call stack:<br/>
    (0x183ce0f48 0x19918bf80 0x183bcc4e0 0x10006f5f0 0x1002b9ca8 0x1002b9c68 0x1002bf710 0x183c981f8 0x183c96060 0x183bc4ca0 0x18f148088 0x1892dcffc 0x1000716a0 0x1999ce8b8)<br/>
    libc++abi.dylib: terminating with uncaught exception of type NSException

Here is the part of    appdelegate.m file concerned by this error :

// Get the users Device Model, Display Name, Token & Version Number
UIDevice *device = [UIDevice currentDevice];

NSUserDefaults *dict = [NSUserDefaults standardUserDefaults];
NSString *identifier = [dict stringForKey:@"identifier"];
NSString *deviceName = device.name;
NSString *deviceModel = device.model;
NSString *deviceSystemVersion = device.systemVersion;

// Prepare the Device Token for Registration (remove spaces and < >)
NSString *deviceToken = [[[[token description]
                           stringByReplacingOccurrencesOfString:@"<"withString:@""]
                          stringByReplacingOccurrencesOfString:@">" withString:@""]
                         stringByReplacingOccurrencesOfString: @" " withString: @""];

NSMutableDictionary *postDatas = [NSMutableDictionary dictionary];
[postDatas setObject:appName forKey:@"app_name"];
[postDatas setObject:appVersion forKey:@"app_version"];
[postDatas setObject:identifier forKey:@"device_uid"];
[postDatas setObject:deviceToken forKey:@"device_token"];
[postDatas setObject:deviceName forKey:@"device_name"];
[postDatas setObject:deviceModel forKey:@"device_model"];
[postDatas setObject:deviceSystemVersion forKey:@"device_version"];
[postDatas setObject:pushBadge forKey:@"push_badge"];
[postDatas setObject:pushAlert forKey:@"push_alert"];
[postDatas setObject:pushSound forKey:@"push_sound"];

Request *request = [Request alloc];
request.delegate = self;

[request postDatas:postDatas withUrl:@"push/iphone/registerdevice/"];

इस विधि को पदावनत किया जाता है?

3
Siberian Scout 2 पद 2015, 12:30

2 जवाब

सबसे बढ़िया उत्तर

आप पहचानकर्ता में शून्य हो रहे हैं। तो कृपया इसे इस तरह से जांचें

NSString *identifier = [dict stringForKey:@"identifier"];

if([identifier length] != 0)
    [postDatas setObject:identifier forKey:@"device_uid"];
else
    [postDatas setObject:@"" forKey:@"device_uid"];
5
Manvik 2 पद 2015, 10:04

आप एक शब्दकोश में शून्य मान नहीं रख सकते। यह दुर्घटनाग्रस्त हो जाएगा।

आपको वास्तव में जांच करने की आवश्यकता है: ये शून्य मूल्य कहां से आते हैं, और जब आप शून्य मान प्राप्त करते हैं तो क्या करना उचित है? यह केवल कुछ है जो आप तय कर सकते हैं। मुकेश का जवाब आपको चाहिए कि शून्य के बजाय खाली स्ट्रिंग को कैसे स्टोर किया जाए। इससे दुर्घटना टल जाती है। यह अक्सर करना सही बात है, लेकिन हमेशा नहीं। इसलिए जांच लें कि यदि कोई एक मान शून्य है, तो आपके ऐप को क्या करना चाहिए और इसे ठीक वैसा ही करें।

1
gnasher729 2 पद 2015, 10:47