作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图在 NSFileCoordinator
中写入内容,但它抛出了一个错误。我尝试了几种方法,但都没有用。
我的代码:
private func saveValues(note :String){
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: nil, error: nil, byAccessor: { (newUrl: NSURL!) in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(newURL, atomically: true)
})
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: nil, error: nil) { ( newURL :NSURL!) -> Void in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(newURL, atomically: true)
}
print("===##==> ",note)
}
整个代码看起来——
import UIKit
class UpdateViewController: UIViewController, NSFilePresenter {
@IBOutlet weak var lblView: UILabel!
@IBOutlet weak var tfInputField: UITextField!
var fileCoordinator = NSFileCoordinator()
var notes :NSMutableArray = NSMutableArray()
var presentedItemURL: NSURL? {
let groupURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.navigateproje")
let fileURL = groupURL?.URLByAppendingPathComponent("notes.bin")
return fileURL!
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func btnPressed(sender: UIButton) {
print("print ",tfInputField.text)
lblView.text = tfInputField.text
saveValues(tfInputField.text!)
}
private func saveValues(note :String){
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: nil, error: nil, byAccessor: { (newUrl: NSURL!) in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(newURL, atomically: true)
})
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: nil, error: nil) { ( newURL :NSURL!) -> Void in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(newURL, atomically: true)
}
print("===##==> ",note)
}
var presentedItemOperationQueue: NSOperationQueue {
return NSOperationQueue.mainQueue()
}
}
最佳答案
我解决了它-
https://forums.developer.apple.com/thread/9301
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: NSFileCoordinatorWritingOptions.ForMoving, error: &writingError, byAccessor: { (coordinator) in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(coordinator, atomically: true)
})
真正的问题是选项类型是 nil ,它必须是 NSFileCoordinatorWritingOptions.ForMerging 类型,
所以即使是下面的作品-
fileCoordinator.coordinateWritingItemAtURL(presentedItemURL!, options: NSFileCoordinatorWritingOptions.ForMerging, error: nil) { ( newURL :NSURL!) -> Void in
self.notes.addObject(note)
let saveData = NSKeyedArchiver.archivedDataWithRootObject(self.notes)
let success = saveData.writeToURL(newURL, atomically: true)
}
关于ios - NSFileCoordinator coordinateWritingItemAtURL 无法调用 'coordinateWritingItemAtURL',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811944/
我试图在 NSFileCoordinator 中写入内容,但它抛出了一个错误。我尝试了几种方法,但都没有用。 我的代码: private func saveValues(note :String){
我正在我的应用程序中设置 NSFileCoordinator 和 NSFilePresenter,这样我就可以安全地从我的 AppleWatch 应用程序执行文件 IO。在我的代码中的某些地方,我快速
我是一名优秀的程序员,十分优秀!