UITextView と UIWebView の間でコア データ レコードを渡す際に問題が発生しています。この背後にある考え方は、ユーザーが入力した HTML コードを Web ビューにロードしてプレビューすることです。私は 1 つの大きな問題を抱えています。ユーザーが渡した HTML は、2 回目のパス (またはアクション ボタンの 2 回目のクリック) で読み込まれます。基本的に、UIWebView は、HTML ボイラープレート コードの最新のリビジョンではなく、以前のリビジョンを表示しています。私をさらに混乱させているのは、UIWebView からの戻り時に、レコードを削除するようにコードを設定しているため、2 回目のパスでもレコード (レコード) が存在しないことです。
これが私のUITextViewにあるコードです
@IBAction func previewCompile(sender: AnyObject) {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let userCode = NSEntityDescription.insertNewObjectForEntityForName("Data", inManagedObjectContext: context)
let request = NSFetchRequest(entityName: "Data")
request.returnsObjectsAsFaults = false
do {
userCode.setValue(codeView.text, forKey: "code")
htmlPreviewCode = (userCode.valueForKey("code") as? String)!
try context.save()
print(htmlPreviewCode)
} catch {
print("No record was saved!")
}
}
受信UIWebViewのコードは次のとおりです
var html = String()
@IBOutlet weak var deleteRecord: UIButton!
@IBAction func goBACK(sender: AnyObject) {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let request = NSFetchRequest(entityName: "Data")
request.returnsObjectsAsFaults = false
do {
let results = try context.executeFetchRequest(request)
if results.count > 0 {
for result: AnyObject in results {
context.deleteObject(result as! NSManagedObject)
print("Record Deleted")
}
}
} catch {
print("Record failed to delete!")
}
}
@IBOutlet weak var webview: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
html = htmlPreviewCode
webview.loadHTMLString(html, baseURL: nil)
}
どんな助けでも本当に感謝しています! これは私の最初のアプリ構築であり、プログラミング言語を学ぶのは初めてです。そのため、重要な詳細が欠落している場合はご容赦ください。