Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
readFromURL的Swift NSDocument子类:类型:错误:不接受?_Swift_Nsdocument - Fatal编程技术网

readFromURL的Swift NSDocument子类:类型:错误:不接受?

readFromURL的Swift NSDocument子类:类型:错误:不接受?,swift,nsdocument,Swift,Nsdocument,我不理解NSC文档要求;我只需要记录url,以便在以后还原windows时再次检索url。但我使用的是Swift:我添加了“@objc”例程,认为这是不同的。我来自我的objective-c传统,堆栈名称似乎使用了该传统。最新的Swift版本(xcode 8.3)甚至与7.3.1版本更为不同 我试图做的是将一个文档与一个url相关联,并在被要求时将其转储到磁盘。一旦我解决了这个问题,医生就会变成一个骗子。从我最初的问题来看,我可以放弃的第一个功能是什么 class PlayItem : NSOb

我不理解NSC文档要求;我只需要记录url,以便在以后还原windows时再次检索url。但我使用的是Swift:我添加了“@objc”例程,认为这是不同的。我来自我的objective-c传统,堆栈名称似乎使用了该传统。最新的Swift版本(xcode 8.3)甚至与7.3.1版本更为不同

我试图做的是将一个文档与一个url相关联,并在被要求时将其转储到磁盘。一旦我解决了这个问题,医生就会变成一个骗子。从我最初的问题来看,我可以放弃的第一个功能是什么

class PlayItem : NSObject {
    var name : String = k.item
    var link : URL = URL.init(string: "http://")!
    var time : TimeInterval
    var rank : Int

    override init() {
        name = k.item
        link = URL.init(string: "http://")!
        time = 0.0
        rank = 0
        super.init()
    }
    init(name:String, link:URL, time:TimeInterval, rank:Int) {
        self.name = name
        self.link = link
        self.time = time
        self.rank = rank
        super.init()
    }
    override var description : String {
        return String(format: "%@: %p '%@'", self.className, self, name)
    }
}

class Document : NSDocument {

    @objc func readFromURL(url: NSURL, ofType typeName: String, error outError: NSErrorPointer) -> Bool {
        self.fileURL = url as URL
        self.fileType = typeName
        return true
    }

    convenience init(contentsOf: URL, ofType: String) throws {
        self.init()

        switch ofType {
            case "internal":
            self.fileURL = contentsOf
            self.fileType = ofType
            break

        default:
            Swift.print("nyi")
        }
        throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
   }

    override func read(from url: URL, ofType typeName: String) throws {
        switch typeName {
        case "internal":
            self.fileURL = url
            self.fileType = typeName
            break

        case "h2o":
            let data = try Data.init(contentsOf: url)
            do {
                try! self.read(from: data, ofType: typeName)
                self.fileURL = url as URL
                self.fileType = typeName
            }
            break

        default:
            Swift.print("nyi \(typeName)")
            break
    }
    throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)

    override func write(to url: URL, ofType typeName: String) throws {
        switch typeName {
        case "DocumentType":
            var temp = [Dictionary<String,AnyObject>]()
            for key in playlists.keys {
                var list = Array<AnyObject>()
                for playitem in playlists[key] as! [PlayItem] {
                    let item : [String:AnyObject] = [k.name:playitem.name as AnyObject, k.link:playitem.link.absoluteString as AnyObject, k.time:playitem.time as AnyObject, k.rank:playitem.rank as AnyObject]
                    list.append(item as AnyObject)
                }
                temp.append([k.name:key as AnyObject, k.list:list as AnyObject])
            }
            UserDefaults.standard.set(temp, forKey: UserSettings.Playlists.keyPath)
            UserDefaults.standard.synchronize()
            break

        case "h2o":
            let dict = NSDictionary.init()
            dict.setValue(playlists, forKey: UserSettings.Playlists.keyPath)
            dict.setValue(settings, forKey: UserSettings.PlayPrefs.keyPath)
            dict.write(to: url, atomically: true)
            break

        default:
            Swift.print("nyi \(typeName)")
            throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
        }
    }
}

我怀疑投掷是活动的,但我在每个功能中的休息从未被击中?我想在解决这个问题之前,我最近的菜单永远不会正确,每次运行都会创建比上次更多的窗口,因此我希望解决方案能够解决所有这些问题。

根据文档,Swift翻译是
func read(来自url:url,类型为typeName:String)抛出
。如何创建文档?尚未创建或测试编写;到目前为止,我通过plist编辑器为“h2o”文件手动创建,而“DocumentType”没有url,将写入默认值。但是我被卡住了,因为我不能打破任何常规来分类什么看起来像是投掷射击?对不起,我的问题不清楚。如何创建新的文档对象?或者哪个动作触发了新文档对象的创建?我还没有创建文档;我只是在plist编辑器中编辑一个,然后双击它,这将启动一个init(url)方法。但我有一个func要创建,但还没有连接起来;我将更新我的问题以显示它-但写作是一种方式-我将支持2种文档类型,其中内容在plist中(默认值),内容在plist中(保存到文件url)。根据文档,快速翻译是
func-read(从url:url,ofType typeName:String)抛出
。如何创建文档?尚未创建或测试编写;到目前为止,我通过plist编辑器为“h2o”文件手动创建,而“DocumentType”没有url,将写入默认值。但是我被卡住了,因为我不能打破任何常规来分类什么看起来像是投掷射击?对不起,我的问题不清楚。如何创建新的文档对象?或者哪个动作触发了新文档对象的创建?我还没有创建文档;我只是在plist编辑器中编辑一个,然后双击它,这将启动一个init(url)方法。但我有一个func要创建,但还没有连接起来;我将更新我的问题以显示它-但写作是一种方式-我将支持2种文档类型,其中内容在plist中(默认值)和内容在plist中(保存到文件url)。
0   CoreFoundation                      0x00007fff89ed52cb __exceptionPreprocess + 171
1   libobjc.A.dylib                     0x00007fff9ece048d objc_exception_throw + 48
2   CoreFoundation                      0x00007fff89f53c3d +[NSException raise:format:] + 205
3   AppKit                              0x00007fff87e65a45 -[NSDocument readFromURL:ofType:error:] + 419
4   AppKit                              0x00007fff87b66dd7 -[NSDocument _initWithContentsOfURL:ofType:error:] + 172
5   AppKit                              0x00007fff87b66cbc -[NSDocument initWithContentsOfURL:ofType:error:] + 231