CloudKit에서 CkAsset의 웹 URL을 가져와야했습니다. 그러나 신속하게 Apple은 직접 WebURL을 가져올 수 없으며 자산을 다운로드하고 fileURL 만 제공합니다. 그러나, 자바 스크립트로 가능합니다. 따라서 CkAsset WebURL을 가져 오는 JS 파일을 작성했습니다. 브라우저에서이 자바 스크립트 파일을 실행할 때. 신속하게 코드 아래에서 실행하려고하지만 할 수 없습니다. 내가 검색 한 것처럼 "stringByEvaluatingJavaScriptFromString"이라는 함수가 있지만이를 실행하는 방법을 알 수 없습니다.JS 코드를 실행하여 신속하게 데이터 가져 오기
index.html을
<meta charset="utf-8">
<title>TIL - Today I Learned</title>
<script src="https://cdn.apple-cloudkit.com/ck/1/cloudkit.js" async></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<script type="text/javascript" src="TIL.js"></script>
자바 스크립트 파일 :
window.addEventListener('cloudkitloaded', function() {
console.log("listening for cloudkitloaded");
CloudKit.configure({
containers: [{
// To use your own container, replace containerIdentifier and apiToken
containerIdentifier: 'iCloud.com.emreonder.ogun-dalka-music',
apiToken: '42ba168168dbf3a8c9562904ebf311864258f8dd3638a241d2372057ea0e8a55',
environment: 'development'
}]
});
console.log("cloudkitloaded");
var self = this;
console.log("get default container");
var container = CloudKit.getDefaultContainer();
console.log("set publicDB");
var publicDB = container.publicCloudDatabase;
self.items = ko.observableArray();
// Fetch public records
// self.fetchRecords = function() {
console.log("fetching records from " + publicDB);
var query = { recordType: 'Musics'};
// Execute the query.
return publicDB.performQuery(query).then(function(response) {
if(response.hasErrors) {
console.error(response.errors[0]);
return;
}
var records = response.records;
var numberOfRecords = records.length;
if (numberOfRecords === 0) {
console.error('No matching items');
return;
}
console.log(records.length + " records")
console.log(records);
self.items(records);
});
// };
});
스위프트 파일 :
let url = Bundle.main.url(forResource: "index", withExtension: "html")
let myRequest = NSURLRequest(url: url!);
webView.loadRequest(myRequest as URLRequest);
print(webView.pageCount)
let test_string = webView.stringByEvaluatingJavaScript(from: "function();")
print(test_string)
편집 : 나는 또한 html 파일을 넣어하지만 지금은 모르는 방법 javascript 함수를 호출하십시오.
은 JS에게 평가 JS 파일에서 함수 아래에 변수를 만드는 데 필요한 , 당신은 먼저 webview에로드해야합니다 그들은 당신의 js를 실행합니다 – Injectios
그것은 "이니셜 라이저가 없습니다"라고 말합니다. 델리게이트 또는 뭔가를 구현해야합니까? –