2

誰かが私を助けてくれることを願っています。私はxcode4.5.2でiOS6アプリを開発しています。このアプリは大幅な変更の場所サービスを使用し、ローカリゼーションが逆ジオコーディングを使用していることを検出し、国コード、adminArea、subAdminArea、地域、サブ地域をWebを使用してオンラインDBにアップロードしますサービス。iPhoneシミュレーターでは正常に動作しますが、iOSデバイスでは理由もなく直接閉じられます。アプリの位置情報サービスを無効にすると、正常に実行されますが、これらを使用する権限がある場合は、1秒以内に閉じます。

これはコードです:

        #import "searchViewController.h"
    #import <CoreLocation/CoreLocation.h>
    #import "resultViewController.h"

    @interface searchViewController () <UIPickerViewDataSource, UIPickerViewDelegate, CLLocationManagerDelegate, NSXMLParserDelegate>
    @property (weak, nonatomic) IBOutlet UITextView *errorSearchTextView;
    - (IBAction)searchButton:(id)sender;
    @property (weak, nonatomic) IBOutlet UIPickerView *bloodTypePicker;

    @end

    @implementation searchViewController

    @synthesize bloodType,locationManager,geocoder, webData, xmlParser, soapResults, localizacion, usuarios, correos, coincidencias;

- (void)viewDidLoad
{
    [super viewDidLoad];
    bloodType = [[NSArray alloc] initWithObjects:@"A+", @"A-", @"B+", @"B-", @"O+", @"O-", @"AB+", @"AB-", nil];
    [self startLocating];//here is where i start the location monitoring
    // Do any additional setup after loading the view.
}

//これはロケーションマネージャを起動する方法です。

- (void) startLocating
{
    if ([CLLocationManager locationServicesEnabled])//si los servicios de localizacion estan activados.
    {
        if (nil == locationManager) {
            locationManager = [[CLLocationManager alloc] init];
            locationManager.delegate = self;
            [locationManager startMonitoringSignificantLocationChanges];
        }
    } else
    {
        self.errorSearchTextView.text = NSLocalizedString(@"location services are not available, app will not work properly, please activate these and restart the app.", @"localization not available");
    }
}

//これらは、場所の更新を受信したときに呼び出されるメソッドです。

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *location = [locations lastObject];
    [self geocoder:location];
    localizacion = 0;
}

//metodo para el geocoder
-(void) geocoder:(CLLocation *)location
{
    if (!geocoder) geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:location  completionHandler:^(NSArray *placemarks, NSError *error) {
        if ([placemarks count]>0)
        {
            NSString *usuario = [[NSUserDefaults standardUserDefaults] stringForKey:@"usuario"];
            CLPlacemark *place = [placemarks objectAtIndex:0];
            NSURL *url = [NSURL URLWithString:@"here goes the web service url"];
            NSMutableString *soapMessage = [[NSMutableString alloc] init];
            [soapMessage appendString:@"<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:localizacionWSDL\">"
             "<soapenv:Header/>"
             "<soapenv:Body>"
                "<urn:actualiza soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
             "<username xsi:type=\"xsd:string\">"];
            [soapMessage appendString:usuario];
            [soapMessage appendString:@"</username>"
             "<latitude xsi:type=\"xsd:string\">"];
            [soapMessage appendString:[NSString stringWithFormat:@"%f",location.coordinate.latitude] ];
            [soapMessage appendString:@"</latitude>"
             "<longitude xsi:type=\"xsd:string\">"];
            [soapMessage appendString:[NSString stringWithFormat:@"%f",location.coordinate.longitude]];
            [soapMessage appendString:@"</longitude>"
             "<countryCode xsi:type=\"xsd:string\">"];
            [soapMessage appendString:place.ISOcountryCode];
            [soapMessage appendString:@"</countryCode>"
             "<adminArea xsi:type=\"xsd:string\">"];
            [soapMessage appendString:place.administrativeArea];
            [soapMessage appendString:@"</adminArea>"
             "<subAdminArea xsi:type=\"xsd:string\">"];
            [soapMessage appendString:place.subAdministrativeArea];
            [soapMessage appendString:@"</subAdminArea>"
             "<locality xsi:type=\"xsd:string\">"];
            [soapMessage appendString:place.locality];
            [soapMessage appendString:@"</locality>"
             "<subLocality xsi:type=\"xsd:string\">"];
            [soapMessage appendString:place.subLocality];
            [soapMessage appendString:@"</subLocality>"
             "</urn:actualiza>"
             "</soapenv:Body>"
             "</soapenv:Envelope>"];
            NSMutableURLRequest *theResquest = [NSMutableURLRequest requestWithURL:url];
            NSString *messageLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
            [theResquest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
            [theResquest addValue:@"urn:LoginAction" forHTTPHeaderField:@"SOAPAction"];
            [theResquest addValue:messageLength forHTTPHeaderField:@"Content-Length"];
            [theResquest setHTTPMethod:@"POST"];
            [theResquest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
            webData = [NSMutableData data];
            localizacion = 0;
            NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theResquest delegate:self];
            if (theConnection) {
                self.errorSearchTextView.text = NSLocalizedString(@"BloodyHelp is updating your data.", @"updating location");
            } else {
                self.errorSearchTextView.text = NSLocalizedString(@"Conection error.\n", @"connection error updating");
            }
        }
    }];
}

私は本当に何をすべきかわかりません。シミュレーターではすべてが正常に機能します。PD私はobjetive-cで新しいプログラミングをしています

編集:クラッシュレポートを追加するには

Incident Identifier: C14368BA-39ED-454F-930C-1D2CB94FB299
CrashReporter Key:   1eeb5e6ac17a73185e6d73aeb7aa4da7e7edab94
Hardware Model:      iPad3,3
Process:         XXXX [2221]
Path:            /var/mobile/Applications/901983D5-A1AA-4642-A858-9E211D0AA09E/xxxx.app/xxxx
Identifier:      xxxxxx
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-03-01 11:35:58.829 -0600
OS Version:      iOS 6.1.2 (10B146)
Report Version:  104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  0

Last Exception Backtrace:
(0x3302629e 0x3aebf97a 0x330261c0 0x32ff576e 0x6fba8 0x3b2d711a 0x3b2d64b2 0x3b2db1b8 0x32ff9f36 0x32f6ceb8 0x32f6cd44 0x36b1f2e6 0x34e822fc 0x6d7ea 0x3b2f6b1c)

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3b3bd350 0x3b3ac000 + 70480
1   libsystem_c.dylib               0x3b33411e 0x3b305000 + 192798
2   libsystem_c.dylib               0x3b37096e 0x3b305000 + 440686
3   libc++abi.dylib                 0x3a90ed4a 0x3a90b000 + 15690
4   libc++abi.dylib                 0x3a90bff4 0x3a90b000 + 4084
5   libobjc.A.dylib                 0x3aebfa74 0x3aeb7000 + 35444
6   libc++abi.dylib                 0x3a90c078 0x3a90b000 + 4216
7   libc++abi.dylib                 0x3a90c110 0x3a90b000 + 4368
8   libc++abi.dylib                 0x3a90d50e 0x3a90b000 + 9486
9   libobjc.A.dylib                 0x3aebf9ba 0x3aeb7000 + 35258
10  CoreFoundation                  0x330261c0 0x32f64000 + 795072
11  CoreFoundation                  0x32ff576e 0x32f64000 + 595822
12  appname                     0x0006fba8 0x6c000 + 15272
13  libdispatch.dylib               0x3b2d711c 0x3b2d5000 + 8476
14  libdispatch.dylib               0x3b2d64b4 0x3b2d5000 + 5300
15  libdispatch.dylib               0x3b2db1b8 0x3b2d5000 + 25016
16  CoreFoundation                  0x32ff9f36 0x32f64000 + 614198
17  CoreFoundation                  0x32f6ceb8 0x32f64000 + 36536
18  CoreFoundation                  0x32f6cd44 0x32f64000 + 36164
19  GraphicsServices                0x36b1f2e6 0x36b1a000 + 21222
20  UIKit                           0x34e822fc 0x34e2b000 + 357116
21  appname                     0x0006d7ea 0x6c000 + 6122
22  libdyld.dylib                   0x3b2f6b1c 0x3b2f5000 + 6940

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x3b3ad648 0x3b3ac000 + 5704
1   libdispatch.dylib               0x3b2dd974 0x3b2d5000 + 35188
2   libdispatch.dylib               0x3b2dd654 0x3b2d5000 + 34388

Thread 2 name:  WebThread
Thread 2:
0   libsystem_kernel.dylib          0x3b3aceb4 0x3b3ac000 + 3764
1   libsystem_kernel.dylib          0x3b3ad048 0x3b3ac000 + 4168
2   CoreFoundation                  0x32ffb040 0x32f64000 + 618560
3   CoreFoundation                  0x32ff9d9e 0x32f64000 + 613790
4   CoreFoundation                  0x32f6ceb8 0x32f64000 + 36536
5   CoreFoundation                  0x32f6cd44 0x32f64000 + 36164
6   WebCore                         0x38f52500 0x38f48000 + 42240
7   libsystem_c.dylib               0x3b31630e 0x3b305000 + 70414
8   libsystem_c.dylib               0x3b3161d4 0x3b305000 + 70100

Thread 3:
0   libsystem_kernel.dylib          0x3b3bdd98 0x3b3ac000 + 73112
1   libsystem_c.dylib               0x3b30bcf6 0x3b305000 + 27894
2   libsystem_c.dylib               0x3b30ba12 0x3b305000 + 27154
3   libsystem_c.dylib               0x3b30b8a0 0x3b305000 + 26784

Thread 4:
0   libsystem_kernel.dylib          0x3b3bdd98 0x3b3ac000 + 73112
1   libsystem_c.dylib               0x3b30bcf6 0x3b305000 + 27894
2   libsystem_c.dylib               0x3b30ba12 0x3b305000 + 27154
3   libsystem_c.dylib               0x3b30b8a0 0x3b305000 + 26784

Thread 5 name:  com.apple.NSURLConnectionLoader
Thread 5:
0   libsystem_kernel.dylib          0x3b3aceb4 0x3b3ac000 + 3764
1   libsystem_kernel.dylib          0x3b3ad048 0x3b3ac000 + 4168
2   CoreFoundation                  0x32ffb040 0x32f64000 + 618560
3   CoreFoundation                  0x32ff9d9e 0x32f64000 + 613790
4   CoreFoundation                  0x32f6ceb8 0x32f64000 + 36536
5   CoreFoundation                  0x32f6cd44 0x32f64000 + 36164
6   Foundation                      0x338b93d0 0x3388c000 + 185296
7   Foundation                      0x3393ce80 0x3388c000 + 724608
8   libsystem_c.dylib               0x3b31630e 0x3b305000 + 70414
9   libsystem_c.dylib               0x3b3161d4 0x3b305000 + 70100

Thread 6:
0   libsystem_kernel.dylib          0x3b3bdd98 0x3b3ac000 + 73112
1   libsystem_c.dylib               0x3b30bcf6 0x3b305000 + 27894
2   libsystem_c.dylib               0x3b30ba12 0x3b305000 + 27154
3   libsystem_c.dylib               0x3b30b8a0 0x3b305000 + 26784

Thread 7 name:  com.apple.CFSocket.private
Thread 7:
0   libsystem_kernel.dylib          0x3b3bd594 0x3b3ac000 + 71060
1   CoreFoundation                  0x32fff1f2 0x32f64000 + 635378
2   libsystem_c.dylib               0x3b31630e 0x3b305000 + 70414
3   libsystem_c.dylib               0x3b3161d4 0x3b305000 + 70100

Thread 8:
0   libsystem_kernel.dylib          0x3b3bdd98 0x3b3ac000 + 73112
1   libsystem_c.dylib               0x3b30bcf6 0x3b305000 + 27894
2   libsystem_c.dylib               0x3b30ba12 0x3b305000 + 27154
3   libsystem_c.dylib               0x3b30b8a0 0x3b305000 + 26784

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3ceb1534
    r4: 0x00000006    r5: 0x3ceb1b88      r6: 0x1f0e3e24      r7: 0x2fd93c74
    r8: 0x1f0e3e00    r9: 0x00000300     r10: 0x38ac0a46     r11: 0x38ac0ce8
    ip: 0x00000148    sp: 0x2fd93c68      lr: 0x3b334123      pc: 0x3b3bd350
  cpsr: 0x00000010

Binary Images:

それ以上ですが、長すぎます。それは十分だ?

編集私はコンソールを取り出しました:

Mar  1 22:08:26 iPad-de-xxx locationd[45] <Notice>: client 'com.appname' starting significant location changes
Mar  1 22:08:26 iPad-de-xxx awdd[3079] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Mar  1 22:08:26 iPad-de-xxx awdd[3079] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
Mar  1 22:08:49 iPad-de-xxx awdd[3080] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Mar  1 22:08:49 iPad-de-xxx awdd[3080] <Error>: CoreLocation: CLClient is deprecated. Will be obsolete soon.
Mar  1 22:08:52 iPad-de-xxx appname copy[3078] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString appendString:]: nil argument'
    *** First throw call stack:
    (0x330262a3 0x3aebf97f 0x330261c5 0x32ff5773 0xfb85 0x3b2d711f 0x3b2d64b7 0x3b2db1bd 0x32ff9f3b 0x32f6cebd 0x32f6cd49 0x36b1f2eb 0x34e82301 0xd7c7 0x3b2f6b20)
Mar  1 22:08:52 iPad-de-xxxx ReportCrash[3082] <Notice>: Formulating crash report for process BloodyHelp copy[3078]
Mar  1 22:08:52 iPad-de-xxxxx com.apple.launchd[1] (UIKitApplication:com.appname[0x9e96][3078]) <Warning>: (UIKitApplication:com.appname[0x9e96]) Job appears to have crashed: Abort trap: 6
Mar  1 22:08:52 iPad-de-xxxxbackboardd[26] <Warning>: Application 'UIKitApplication:com.appname[0x9e96]' exited abnormally with signal 6: Abort trap: 6
Mar  1 22:08:52 iPad-de-Shimon ReportCrash[3082] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Mar  1 22:08:52 iPad-de-xxx ReportCrash[3082] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/appname copy_2013-03-01-220852_iPad-de-xxxx plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0


*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString appendString:]: nil argument'
4

1 に答える 1

1

私は最終的にこれを解決しました、クラッシュログとコンソールアウトはエラーの正確なポイントを見つけてそれを解決するポイントでした、問題はロケーションサービスではありませんでした、問題はサブ管理エリアがnullでiをgocodingした後よりもでした文字列に追加しようとしていました。値がnilだったので、例外をスローして閉じます。

解決策はこれを作成することでした

 NSString *subAdminArea = [NSString StringWithFormat:@"%d",place.subAdministrativeArea];

したがって、place.subAdministrativeAreaの値がnilの場合、それは""Strgingです。

アドバイス:問題を解決するには、デバイスをxcodeに接続し、コンソールが表示されているときにエラーを発生させます(NSLogで「コンソールフラグ」を設定して、エラーの場所を知ることができます。

ありがとう!!

于 2013-03-02T08:04:41.967 に答える