Ios 分段故障:11-Xcode 10

Ios 分段故障:11-Xcode 10,ios,swift,xcode,xcode10,Ios,Swift,Xcode,Xcode10,在RangeText=”处执行类型检查语句时{ 播放名称=[] let requestLibrary=NSFetchRequest(entityName:“Library”) let request=NSFetchRequest(entityName:“播放列表”) request.sortDescriptors=[playlysortdescriptor] playlists=try?context.fetch(request)as NSArray! 打印(“播放列表计数-”,playlist

在RangeText=”处执行类型检查语句时{ 播放名称=[] let requestLibrary=NSFetchRequest(entityName:“Library”)

let request=NSFetchRequest(entityName:“播放列表”)
request.sortDescriptors=[playlysortdescriptor]
playlists=try?context.fetch(request)as NSArray!
打印(“播放列表计数-”,playlists.Count)
让librarys:NSArray!=try?context.fetch(requestLibrary)作为NSArray!
图书馆中的图书馆{
让libraryName=(库作为任何对象)。值(forKey:“库”)作为!字符串
播放名+=[库名]
}
用于播放列表中的播放列表{
让playlame=(playlistas AnyObject).value(forKey:“playlistName”)作为!字符串
如果播放名称==“库”{
播放名。插入(播放名,位于:0)
}否则{
播放名称+=[播放名称]
}
}
}"

  • 在RangeText=“playlists=try?context.fetch(request)as NSArray!”处键入检查表达式时出错:分段错误:11
  • 代码如下:

     func refreshPlaylists(){
        playlistNames = []
        let requestLibrary = NSFetchRequest<NSFetchRequestResult>(entityName: "Library")
    
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Playlist")
        request.sortDescriptors = [playlistSortDescriptor]
    
        playlists = try? context.fetch(request) as NSArray!
        print("Playlist Count - ",playlists.count)
    
    
        let librarys:NSArray! = try? context.fetch(requestLibrary) as NSArray!
        for library in librarys{
            let libraryName = (library as AnyObject).value(forKey: "library") as! String
            playlistNames += [libraryName]
        }
    
        for playlist in playlists{
            let playlistName = (playlist as AnyObject).value(forKey: "playlistName") as! String
            if playlistName == "Library" {
                playlistNames.insert(playlistName, at: 0)
            }else {
                playlistNames += [playlistName]
            }
        }
    }
    
    func刷新播放列表(){
    播放名称=[]
    let requestLibrary=NSFetchRequest(entityName:“Library”)
    let request=NSFetchRequest(entityName:“播放列表”)
    request.sortDescriptors=[playlysortdescriptor]
    playlists=try?context.fetch(request)as NSArray!
    打印(“播放列表计数-”,playlists.Count)
    让librarys:NSArray!=try?context.fetch(requestLibrary)作为NSArray!
    图书馆中的图书馆{
    让libraryName=(库作为任何对象)。值(forKey:“库”)作为!字符串
    播放名+=[库名]
    }
    用于播放列表中的播放列表{
    让playlame=(playlistas AnyObject).value(forKey:“playlistName”)作为!字符串
    如果播放名称==“库”{
    播放名。插入(播放名,位于:0)
    }否则{
    播放名称+=[播放名称]
    }
    }
    }
    

    在我升级到Xcode 10之前它就可以工作了。有什么想法吗?

    没有像
    NSArray这样的类型而且在任何情况下,您都没有任何理由对其进行强制转换。将
    作为NSArray删除全部。使用Swift类型。

    我不清楚到底是什么导致了错误-运行时不是你的应用程序?它是XCode,或者Swift编译器?@Rup我试图编译并运行,但它显示了这个错误。
     func refreshPlaylists(){
        playlistNames = []
        let requestLibrary = NSFetchRequest<NSFetchRequestResult>(entityName: "Library")
    
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Playlist")
        request.sortDescriptors = [playlistSortDescriptor]
    
        playlists = try? context.fetch(request) as NSArray!
        print("Playlist Count - ",playlists.count)
    
    
        let librarys:NSArray! = try? context.fetch(requestLibrary) as NSArray!
        for library in librarys{
            let libraryName = (library as AnyObject).value(forKey: "library") as! String
            playlistNames += [libraryName]
        }
    
        for playlist in playlists{
            let playlistName = (playlist as AnyObject).value(forKey: "playlistName") as! String
            if playlistName == "Library" {
                playlistNames.insert(playlistName, at: 0)
            }else {
                playlistNames += [playlistName]
            }
        }
    }