【问题标题】:ObjC add text file lines to PickerViewObjC 将文本文件行添加到 PickerView
【发布时间】:2014-11-15 23:24:39
【问题描述】:

我在这里有这段代码,我在运行时收到 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 对象

【问题讨论】:

  • 这一定意味着-pathForRescource:ofType:正在返回nil
  • 您的问题内容似乎与选择器视图无关。

标签: ios objective-c arrays


【解决方案1】:

我做错了什么?

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2013-01-04
    • 2016-08-29
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多