Objective c 在拆分NSString后获取EXC\u BAD\u访问权限

Objective c 在拆分NSString后获取EXC\u BAD\u访问权限,objective-c,Objective C,我正在尝试创建一个人们回答问题的游戏。我正在从文本文件中加载问题。不同部分用•分隔,问题用§。用于分隔的代码可以很好地工作,除非我试图用它创建一个问题 for(int n = 0; n<[questionsFromFile count]; n++) { NSArray *params = [((NSString *)questionsFromFile[n]) componentsSeparatedByString:@"•"]; NSString *fact = param

我正在尝试创建一个人们回答问题的游戏。我正在从文本文件中加载问题。不同部分用•分隔,问题用§。用于分隔的代码可以很好地工作,除非我试图用它创建一个问题

for(int n = 0; n<[questionsFromFile count]; n++)
{
    NSArray *params = [((NSString *)questionsFromFile[n]) componentsSeparatedByString:@"•"];

    NSString *fact = params[0];
    NSString *prompt = params[1];
    NSString *image = params[2];
    NSString *answerAsString = params[3];

    BOOL answer = [answerAsString boolValue];
    YNQuestion *question = [[YNQuestion alloc]initWithFact:fact prompt:prompt image:image answer:answer];
    [self.allQuestions addObject:question];
}
当我运行它时,它工作正常,直到加载了一个问题。然后,它会在
EXC\u BAD\u访问(code=2)
时崩溃。如果我将事实、提示、图像等替换为“你好”或“再见”,则效果良好

我正在使用ARC。另外,这是问题的代码

@interface YNQuestion : NSObject
@property(assign, nonatomic)NSString *fact;
@property(assign, nonatomic)NSString *prompt;
@property(assign, nonatomic)NSString *image;
@property(assign, nonatomic)BOOL answer;
-(id)initWithFact:(NSString *)fact prompt:(NSString *)prompt image:(NSString *)image answer: (BOOL) answer;
-(BOOL)checkIfCorrect: (BOOL)answer;
@end
现在,它起作用了。只有那些不是我默认的


惊喜!它不再起作用了。我认为错误在于在.txt文件中有硬编码答案和答案。我正在测试。

您正在访问一个数组中可能不存在的索引。尝试记录数组的
计数
,查看数组中有多少个条目


另外,设置所有异常断点以查看应用程序崩溃的确切位置。或者,您可以在加载数组后立即设置断点,以查看其内容。

您正在访问一个数组中可能不存在的索引。尝试记录数组的
计数
,查看数组中有多少个条目


另外,设置所有异常断点以查看应用程序崩溃的确切位置。或者,您可以在加载数组后立即设置断点,以查看其内容。

您需要保留对传递给初始值设定项的字符串的强引用。将NSString属性设置为strong而不是assign,它将停止崩溃。

您需要保留对传递给初始值设定项的字符串的强引用。将NSString属性设置为strong而不是assign,它将停止崩溃。

请在
YNQuestion
中发布实例变量/属性的标题定义。您是否也在使用ARC或手动引用计数?@JasonHarwig我刚刚使用了。请在
YNQuestion
中发布实例变量/属性的标题定义。你也在使用ARC或手动参考计数吗?@JasonHarwig我刚刚做了。我已经做了,它会打印出正确的答案或事实。它只是不喜欢被加载到问题中。字符串是正确的。也许我需要将它们设置为常量?那么,在您加载问题之前,这些
NSSTring
s的值是多少?根据NSLog,它们是(按顺序)`fact prompt unknown.png NO`尝试设置所有异常断点,这可能会显示您做错了什么。顺便说一句。如果将.txt文件中的BOOL设置为1而不是YES,会发生什么情况?我已经这样做了,它会打印出正确的答案或事实。它只是不喜欢被加载到问题中。字符串是正确的。也许我需要将它们设置为常量?那么,在您加载问题之前,这些
NSSTring
s的值是多少?根据NSLog,它们是(按顺序)`fact prompt unknown.png NO`尝试设置所有异常断点,这可能会显示您做错了什么。顺便说一句。如果将.txt文件中的BOOL设置为1而不是YES,会发生什么?谢谢,我想你让我开心了。谢谢,我想你让我开心了。
@interface YNQuestion : NSObject
@property(assign, nonatomic)NSString *fact;
@property(assign, nonatomic)NSString *prompt;
@property(assign, nonatomic)NSString *image;
@property(assign, nonatomic)BOOL answer;
-(id)initWithFact:(NSString *)fact prompt:(NSString *)prompt image:(NSString *)image answer: (BOOL) answer;
-(BOOL)checkIfCorrect: (BOOL)answer;
@end