0

我想我会在这个问题上难倒所有人。

我有一个 iOS 项目,它有两种进入应用程序的方式(见图)。

  1. 打开屏幕---->登录(电子邮件/密码)视图----->主视图
  2. 打开屏幕 ----> 注册视图 -----> 创建配置文件 -----> 输入安全代码视图 -----> 主视图

#1 路径永远不会失败,并且该应用程序运行良好。

第二个(#2)不是那么多!使用路径#2,一旦用户进入 MainView,我将“findClosest”称为完美运行的 restkit 调用。第二次调用“findClosest”时,它变成了蒸汽,这意味着成功和失败的块永远不会被调用。我已经运行了 charles 并且调用正在访问服务器并返回,但是从不调用成功或失败块?然后每次连续调用“findClosest”都会变成蒸汽。

如果我关闭应用程序并重新启动,用户会通过上面的路径 #1,并且应用程序可以完美运行(又名 findClosest)。

===这里是“findClosest”方法==================================

 -(void)findClosestThingWithIn:(NSNumber *)distance
                     latitude:(NSNumber *)lat
                    longitude:(NSNumber *)lng
                      limitTo:(NSNumber *)limit
                         type:(NSString*)thingType
{


//Setting these in here if NOT passed in as we have locationManager in restengine
if(nil == lat || nil == lng) {

    //TODO: uncomment this.
    lat = [NSNumber numberWithDouble:self.locationManager.location.coordinate.latitude];
    lng = [NSNumber numberWithDouble:self.locationManager.location.coordinate.longitude];
}

NSAssert(lat, @"Cannot find an Thing without a lat");
NSAssert(lng, @"Cannot find an Thing without a lng");
NSAssert(self.accessToken, "TOken cannot be nil");
NSAssert(self.api_key, "TOken cannot be nil");


if(nil == lat || nil == lng) {
    return;
}

if(self.accessToken && self.api_key) {

    //Delete all previous things as we always want a fresh list
   // [self performSelectorOnMainThread:@selector(deleteAllObjectsWithEntityName:) withObject:@"Thing" waitUntilDone:NO];
    //[self deleteAllObjectsWithEntityName:@"Thing"];
    RKObjectManager *mgr = [RKObjectManager sharedManager];
    [mgr getObject:nil
                                           path:@"v3/things/closest.json"
                                     parameters:@{
                                                     @"auth_token" : self.accessToken,
                                                     @"api_key" : self.api_key,
                                                     @"lat" : ObjectOrNull(lat),
                                                     @"lng" : ObjectOrNull(lng),
                                                     @"max_distance" : ObjectOrNull(distance),
                                                     @"limit" : ObjectOrNull(limit),
                                                     @"type" : thingType
                                                    }
                                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                                            RKLogInfo(@"Find closest Things complete refresh view...");

                                            [[NSNotificationCenter defaultCenter] postNotificationName:kFoundClosestThingss object:[NSNumber numberWithUnsignedInteger:[mappingResult count]] ];

                                            if([mappingResult count] <= 0) {

                                                [UIAlertView alertViewWithTitle:@"No available drivers" message:@"All thingss are currently busy. Please try again later."];

                                            }

                                        }
                                        failure:^(RKObjectRequestOperation *operation, NSError *error) {



                                            RKLogError(@"Find closest Things failed with error: %@", error);
                                            [UIAlertView alertViewWithTitle:@"unavailable" message:@"Error. x005"];
                                        }];

    DLog(@"");

}
DLog(@"");
}

==================================================== =======

我不确定问题是否是故事板的#2 路径和推送,因为这真的是唯一的代码差异?为了尝试解决这个问题,我将输入代码视图中的 segue 删除到 MainView,而是将它们发送回打开屏幕以使其采用 #1 所采用的路径,但是会发生同样的错误吗?

在此处输入图像描述

附加 Restkit 日志(您可以看到对 ...closest.json 的两次调用都成功),但从未调用成功块。

2013-06-10 12:07:40.138 StatMedical[22532:907] -[STOpeningScreenViewController introductionDidFinishWithType:] Did Finish Introduction By Skipping It
2013-06-10 12:08:08.835 StatMedical[22532:3813] I restkit.network:RKHTTPRequestOperation.m:154 POST 'http://my.herokuapp.com/v3/users.json'
2013-06-10 12:08:09.839 StatMedical[22532:611b] I restkit.network:RKHTTPRequestOperation.m:185 POST 'http://my.herokuapp.com/v3/users.json' (201 Created) [1.0041 s]
2013-06-10 12:08:09.863 StatMedical[22532:907] I app:STRestEngine.m:1328 Load complete refresh view...
2013-06-10 12:08:22.931 StatMedical[22532:3c3b] I restkit.network:RKHTTPRequestOperation.m:154 POST 'http://my.herokuapp.com/v3/users/approve_by_code.json'
2013-06-10 12:08:23.054 StatMedical[22532:611b] I restkit.network:RKHTTPRequestOperation.m:185 POST 'http://my.herokuapp.com/v3/users/approve_by_code.json' (201 Created) [0.1224 s]
2013-06-10 12:08:23.074 StatMedical[22532:3c3b] I restkit.network:RKHTTPRequestOperation.m:154 POST 'http://my.herokuapp.com/v3/sessions/login.json'
2013-06-10 12:08:23.495 StatMedical[22532:611b] I restkit.network:RKHTTPRequestOperation.m:185 POST 'http://my.herokuapp.com/v3/sessions/login.json' (201 Created) [0.4213 s]
2013-06-10 12:08:23.514 StatMedical[22532:907] __61-[STRestEngine getSessionWithEmail:password:success:failure:]_block_invoke Mapped the session: <Session: 0x1dc73790>
2013-06-10 12:08:23.539 StatMedical[22532:907] __50-[STEnterCodeViewController tryToEstablishSession]_block_invoke Got a session!
2013-06-10 12:08:23.867 StatMedical[22532:907] -[STMainNavViewController mapView:regionDidChangeAnimated:] The location is <+17.69808269,-39.99999000> +/- 0.00m (speed -1.00 mps / course -1.00) @ 6/10/13, 12:08:23 PM Eastern Daylight Time
2013-06-10 12:08:23.905 StatMedical[22532:907] -[STMainNavViewController mapView:regionDidChangeAnimated:] The location is <+17.69808269,-39.99999000> +/- 0.00m (speed -1.00 mps / course -1.00) @ 6/10/13, 12:08:23 PM Eastern Daylight Time
2013-06-10 12:08:23.974 StatMedical[22532:907] -[STMainNavViewController mapView:regionDidChangeAnimated:] The location is <+37.17818069,-96.05457069> +/- 0.00m (speed -1.00 mps / course -1.00) @ 6/10/13, 12:08:23 PM Eastern Daylight Time
2013-06-10 12:08:25.877 StatMedical[22532:907] -[STMainNavViewController mapView:regionDidChangeAnimated:] The location is <+39.95912667,-75.15170666> +/- 0.00m (speed -1.00 mps / course -1.00) @ 6/10/13, 12:08:25 PM Eastern Daylight Time
2013-06-10 12:08:27.876 StatMedical[22532:3c3b] __47-[STMainNavViewController findNearByThings]_block_invoke app delegate is <STAppDelegate: 0x1c585490>
2013-06-10 12:08:27.885 StatMedical[22532:3c3b] -[STRestEngine findClosestThingsWithIn:latitude:longitude:limitTo:type:] 
2013-06-10 12:08:27.886 StatMedical[22532:3c3b] -[STRestEngine findClosestThingsWithIn:latitude:longitude:limitTo:type:] 
2013-06-10 12:08:27.889 StatMedical[22532:3c3b] I restkit.network:RKHTTPRequestOperation.m:154 GET 'http://my.herokuapp.com/v3/Things/closest.json?api_key=ABC&auth_token=MZNYg9v8ccHssJ6WbSSy&lat=39.95912667093674&limit=15&lng=-75.15170666043032&max_distance=20&type=ALS'
2013-06-10 12:08:27.997 StatMedical[22532:611b] I restkit.network:RKHTTPRequestOperation.m:185 GET 'http://my.herokuapp.com/v3/Things/closest.json?api_key=ABC&auth_token=MZNYg9v8ccHssJ6WbSSy&lat=39.95912667093674&limit=15&lng=-75.15170666043032&max_distance=20&type=ALS' (200 OK) [0.1074 s]
2013-06-10 12:08:28.892 StatMedical[22532:907] I app:STRestEngine.m:901 Find closest Things complete refresh view...
2013-06-10 12:08:28.904 StatMedical[22532:907] -[STMainNavViewController updateETALabel:] 
2013-06-10 12:08:28.905 StatMedical[22532:907] -[STMainNavViewController handleFoundThings:] 
2013-06-10 12:08:50.371 StatMedical[22532:907] self.mode is currently 0
2013-06-10 12:08:50.373 StatMedical[22532:907] self.mode is now set to 1
2013-06-10 12:08:50.373 StatMedical[22532:907] self.mode is now permanently set to 1
2013-06-10 12:08:50.378 StatMedical[22532:3c3b] __47-[STMainNavViewController findNearByThings]_block_invoke app delegate is <STAppDelegate: 0x1c585490>
2013-06-10 12:08:50.389 StatMedical[22532:3c3b] -[STRestEngine findClosestThingsWithIn:latitude:longitude:limitTo:type:] 
2013-06-10 12:08:50.390 StatMedical[22532:3c3b] -[STRestEngine findClosestThingsWithIn:latitude:longitude:limitTo:type:] 
2013-06-10 12:08:50.394 StatMedical[22532:8337] I restkit.network:RKHTTPRequestOperation.m:154 GET 'http://my.herokuapp.com/v3/Things/closest.json?api_key=ABC&auth_token=MZNYg9v8ccHssJ6WbSSy&lat=39.95912667093674&limit=15&lng=-75.15170666043032&max_distance=20&type=BLS'
2013-06-10 12:08:50.737 StatMedical[22532:611b] I restkit.network:RKHTTPRequestOperation.m:185 GET 'http://my.herokuapp.com/v3/Things/closest.json?api_key=ABC&auth_token=MZNYg9v8ccHssJ6WbSSy&lat=39.95912667093674&limit=15&lng=-75.15170666043032&max_distance=20&type=BLS' (200 OK) [0.3432 s]

// 更新 ////// 所以我删除了 VERIFY ACCOUNT 和 MainView 之间的 segue。现在我有一个额外的按钮,因此一旦您在 VERIFY ACCOUNT 视图中提交代码,您就会看到显示“开始使用”的新按钮。单击它会展开转回 SIGN IN 视图。所以现在当这个动作被执行时 MainView 加载,但是 MainView 的 dealloc 被调用了?

想知道这整个问题是否是因为导航控制器问题?这是我的应用程序的完整介绍。

在此处输入图像描述

4

0 回答 0