Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS 6.1中工作的UIPickerView现在在Xcode 5中崩溃_Ios_Iphone_Objective C_Uipickerview - Fatal编程技术网

在iOS 6.1中工作的UIPickerView现在在Xcode 5中崩溃

在iOS 6.1中工作的UIPickerView现在在Xcode 5中崩溃,ios,iphone,objective-c,uipickerview,Ios,Iphone,Objective C,Uipickerview,我为iOS 6开发了一个叫做UIPickerView的应用程序。现在我升级到了Xcode 5,该应用程序在iOS 7上运行良好,但在iOS 6上不再运行 应用程序在转到pickerview时崩溃。pickerview有1个组件和10行 头文件如下所示: #import <UIKit/UIKit.h> #import "ViewController.h" @interface DxChooserViewController : UIViewController <UIPicke

我为iOS 6开发了一个叫做UIPickerView的应用程序。现在我升级到了Xcode 5,该应用程序在iOS 7上运行良好,但在iOS 6上不再运行

应用程序在转到pickerview时崩溃。pickerview有1个组件和10行

头文件如下所示:

#import <UIKit/UIKit.h>
#import "ViewController.h"

@interface DxChooserViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>

@property (weak, nonatomic) id delegate;
@property (weak, nonatomic) IBOutlet UIPickerView *ptDxPicker;

- (IBAction)dismissDxChooser:(id)sender;

@end

更新:

问题已经解决,但下面是崩溃的原因:

2013-12-14 10:47:54.518 Pap读取器[48513:907]***由于未捕获的异常“NSRangeException”而终止应用程序,原因:“***-[NSMutableIndexSet AddIndexInRange::]:范围{2147483647,1}超过NSNotFound-1的最大索引值”


崩溃的一个可能原因是在数组中未成功找到所需的
chosenDxString
(即,您应该检查以确保
chosenDxInt
未返回
NSNotFound
)。您也不会检查以确保
chosenDxString
不是
nil

因此,您可以替换:

int chosenDxInt = 0;
if ([chosenDxString isEqualToString:@""]) {
    chosenDxInt = 0;
} else {
    chosenDxInt = [_dxNames indexOfObject:(chosenDxString)];
}
与:

您还有一个以编程方式定义的值数组,但是您没有向我们展示指定picker视图的委托/数据源并检索这些值的代码。因此,我假设您已经设置了picker视图的datasource/delegate属性,并实现了如下方法:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [self.dxNames count];
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return self.dxNames[row];
}

就您案例中的具体问题而言,您必须使用崩溃的详细信息(崩溃的详细信息,在哪一行崩溃)更新您的问题。如果不清楚您在哪一行崩溃(即,它只是隐晦地引用了您的
main
函数),您可能还想打开它,以便在崩溃时突出显示有问题的代码行。

一个可能的崩溃源是,如果在数组中未成功找到所需的
chosenDxString
(即,您应该检查以确保
chosenDxInt
没有返回
NSNotFound
)。您也不需要检查以确保
chosenDxString
不是
nil

因此,您可以替换:

int chosenDxInt = 0;
if ([chosenDxString isEqualToString:@""]) {
    chosenDxInt = 0;
} else {
    chosenDxInt = [_dxNames indexOfObject:(chosenDxString)];
}
与:

您还有一个以编程方式定义的值数组,但您没有向我们展示指定picker视图的委托/数据源并检索这些值的代码。因此,我假定您已经设置了picker视图的数据源/委托属性,并实现了如下方法:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [self.dxNames count];
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return self.dxNames[row];
}

就您案例中的具体问题而言,您必须用崩溃的详细信息(崩溃的详细信息,在哪一行崩溃)更新您的问题。如果不清楚您在哪一行崩溃(即,它只是隐晦地指您的
main
函数),您可能还想打开,以便在崩溃时突出显示出错的代码行。

非常感谢!!您的回答解决了问题,尽管我忘记了向您提供有关崩溃的详细信息。您的回答提醒我,我忘记了我需要检查chosenDxString是否为零,而不仅仅是@""。我添加了该条件,它成功了!@user3102735是的,您提供的错误消息告诉您,
indexOfObject
返回了
NSNotFound
。很高兴您解决了问题!非常感谢!!您的回复解决了问题,尽管我忘记了向您提供有关崩溃的详细信息。您的回复提醒了我告诉我我忘记了我需要检查chosenDxString是否为零,而不仅仅是@”。我添加了那个条件,它成功了!@user3102735是的,你提供的错误消息告诉你,
indexOfObject
返回了
NSNotFound
。很高兴你解决了这个问题!很抱歉我忘了这么做。问题已经解决了,但下面是崩溃的原因:2013-12-14 10:47:54.518 Pap Reader[48513:907]***由于未捕获的异常“NSRangeException”而终止应用程序,原因:'***-[NSMutableIndexSet AddIndexInsRange:]:范围{2147483647,1}超过了NSNotFound的最大索引值-1'抱歉,我忘了这么做。问题已解决,但崩溃原因如下:2013-12-14 10:47:54.518 Pap Reader[48513:907]***由于未捕获的异常“NSRangeException”而终止应用程序,原因:'***-[NSMutableIndexSet AddIndexInsRange:]:范围{2147483647,1}超过了NSNotFound-1的最大索引值'