【问题标题】:NSSearchPathForDirectoriesInDomains gives EXC_BREAKPOINTNSSearchPathForDirectoriesInDomains 给出 EXC_BREAKPOINT
【发布时间】:2014-08-06 18:27:59
【问题描述】:

我正在开发一个 Swift/Obj-C franken-app,在 OS X Yosemite 上的 Xcode 6 中。我正在尝试在运行 iOS 8 的第 5 代 iPod Touch 上运行它。

几天前我从我的触摸中删除了该应用程序,从那以后它崩溃了,并且我在此处设置了 pathArr 的EXC_BREAKPOINT

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 调用。我没有启用任何断点。我已经强制清理了项目,删除了应用程序,重新启动了所有可见的内容,但无济于事。

有什么想法吗?

【问题讨论】:

  • 尝试将其设为可选项,并检查您是否得到了一些东西。
  • 不,不幸的是,在 NSArray 之后添加一个感叹号没有任何改变。

标签: ios swift nsdocumentdirectory


【解决方案1】:

调试器在错误的行显示错误。问题实际上是该文件可能(在这种情况下不)存在于路径中,您必须在使用 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
}

【讨论】:

  • 是的,100% 正确。谢谢!不过,我觉得奇怪的是错误显示在错误的行上。
  • 我觉得需要在文件名前加“/”
【解决方案2】:

我认为您需要在文件名之前添加“/”,例如

let path = paths[0].stringByAppendingPathComponent("/feeds").

否则文件路径将类似于“/var/mobile/Containers/Data/Application/22627F80-D93D-44F6-AB48-B4A3EF709C78/Documentsfeeds”

【讨论】:

  • 该功能完全可以为您完成
猜你喜欢
  • 2013-05-09
  • 2012-01-19
  • 2010-11-13
  • 1970-01-01
  • 2011-11-29
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多