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