我正在OS X Yosemite的Xcode 6中使用Swift / Obj-C franken-app。我试图在运行iOS 8的iPod Touch第五代上运行它。
我几天前从我的触摸屏中删除了该应用程序,从那时起它崩溃了EXC_BREAKPOINT
我在这里设置了pathArr:
class func feedURLs() -> NSArray
{
var items = NSMutableArray()
var pathArr: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true); // <-- here
var path = pathArr[0].stringByAppendingPathComponent("feeds")
var feeds: NSMutableArray = NSArray(contentsOfFile: path).mutableCopy() as NSMutableArray
for dict : AnyObject in feeds
{
items.addObject(NSURL(string: dict["url"] as NSString))
}
return items
}
我在Xcode中遇到的确切崩溃:
Thread 1: EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)
最终从(Objective C)视图控制器中的viewDidLoad调用该方法。我没有启用任何断点。我强行清理了项目,删除了应用程序,重新启动了所有内容,但无济于事。
有什么想法吗?
答案 0 :(得分:5)
调试器在错误的行上显示错误。问题实际上是文件可能(并且在这种情况下不存在)在路径中,您必须确保该文件在使用NSArray(contentsOfFile: path)
之前存在。
最好尽可能使用let
代替var
。
尝试这样的事情:
class func feedURLs() -> NSArray {
var items = NSMutableArray()
let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true);
let path = paths[0].stringByAppendingPathComponent("feeds")
if NSFileManager.defaultManager().fileExistsAtPath(path) {
let feeds = NSArray(contentsOfFile: path).mutableCopy() as NSMutableArray
for dict: AnyObject in feeds {
items.addObject(NSURL(string: dict["url"] as NSString))
}
}
return items
}
答案 1 :(得分:-3)
我认为您需要在文件名之前添加“ / ”,例如
let path = paths[0].stringByAppendingPathComponent("/feeds").
否则文件路径将类似于“/ var / mobile / Containers / Data / Application / 22627F80-D93D-44F6-AB48-B4A3EF709C78 / Documentsfeeds”