ios - ObjC 将文本文件行添加到 PickerView

标签 ios objective-c arrays

我这里有这段代码,它在运行时出现 SIGBRT 错误。我试图获取文本文件中的每一行并将每一行添加到 PickerView 中,我做错了什么?

 NSString* path = [[NSBundle mainBundle] pathForResource:@"Documents/Recent Images"
                                                 ofType:@"txt"];


NSString* content = [NSString stringWithContentsOfFile:path
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];
_imageURLs = @[content, @"Image Two"];

我在

上收到错误
_imageURLs = @[content, @"Image Two"];

实际错误:

2014-09-21 21:04:44.369 app[22995:60b] * 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'* -[__NSPlaceholderArray initWithObjects:count:]:尝试从 objects[0]' 中插入 nil 对象

最佳答案

what am I doing wrong?

由于多种可能的原因,contentnil。尝试创建数组 _imageURLs 失败,因为数组中的第一个值为 nil,而 NSArrays 不能包含 nil 元素。

您应该做的第一件事是设置一个断点并亲自确认 content 确实为 nil。

您应该做的第二件事是添加一个检查,以确保如果 content 为 nil,您不会尝试创建数组:

if (content) {
    _imageURLs = @[content, @"Image Two"];
}

您应该做的第三件事是找出为什么您期望的字符串没有被创建。可能是您提供的路径错误。您确定您的包中有一个名为 Documents 的目录吗?您确定您要查找的文件存在吗?它包含可以读入字符串的数据吗?在 -stringWithContentsOfFile:... 调用中使用 error 参数将会有所帮助——这就是它的用途。

关于ios - ObjC 将文本文件行添加到 PickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966563/

相关文章:

ios - 实现 SSO 返回空白 View

ios - (iOS,XCode 4.2)使用 Git post-commit hook 设置 bundle version 导致我的项目变成 Mac 项目

c++ - 没有为持有 C++ 对象的属性调用 observeValueForKeyPath?

ios - 在 xcode 中混合 C 和 Objective-C

c++ - 为什么在堆栈上声明的数组的变量名不是指针 C++?

php - php 从数组中获取值

java - 数组索引越界项目欧拉问题 17

objective-c - 比较两个nsstrings的值

ios - 如何识别 ImageView 中不同位置的不同操作?

ios - 动态加载一行的选项