6

시뮬레이터에서 WatchOS4에서 URLBGTask를 만들 때 발생하는 오류는 무엇입니까?WKRefreshBackgroundTask cleanupStorage 파일에 도달하려고 시도하는 중 오류가 발생했습니다.

2017년 9월 28일 16 : 05 : 26.452999 + 0900 MiFollowers WatchKit 확장 [4628 : 4012814] [bg_app_refresh] - [WKRefreshBackgroundTask cleanupStorage] _block_invoke : 213 : 오류 파일에 도달하려고 : /// 사용자/ryuuzaki/라이브러리 /Developer/CoreSimulator/Devices/2E4D6389-93B7-4542-B07F-9A02C720B9AF/data/Containers/Data/PluginKitPlugin/FA4415DF-D984-4394-80B9-EDA199AB587E/Library/com.apple.watchkit/bktaskapp_(null) : 오류 도메인 = NSCocoaErrorDomain Code = 260 "해당 파일이 없기 때문에"bktaskapp_ (null) "파일을 열 수 없습니다." UserInfo = {NSURL = file : /// 사용자/ryuuzaki/라이브러리/개발자/CoreSimulator/장치/2E4D6389-93B7-4542-B07F-9A02C720B9AF/data/컨테이너/데이터/PluginKitPlugin/FA4415DF-D984-4394-80B9-EDA199AB587E/라이브러리/com.apple.watchkit/bktaskapp_ (null), NSFilePath =/사용자/ryuuzaki/라이브러리/개발자/CoreSimulator/장치/2E4D6389-93B7-4542-B07F-9A02C720B9AF/data/컨테이너/데이터/PluginKitPlugin/FA4415DF-D984- 4394-80B9-EDA199AB587E/라이브러리/com.apple.watchkit/bktaskapp_ (널), NSUnderlyingError = 0x79b0e340 {오류 도메인 = NSPOSIXErrorDomain 코드 = 2 "해당 파일이나 디렉토리"} 거기}

당신의 모든 밝은 마음 이게 무슨 의미인지 아세요?

+0

이 문제를 해결할 수 있습니까? – Dirk

+0

개발자 계정을 구입 한 이후로 지금까지는 Apple Developer Support에서 수개월을 보냈지 만 아직 답을 제공하지는 못했습니다. –

답변

2

나는 이것도 얻고 있었다. 지난 이틀 동안 나를 견디게 했어.

userInfo 속성을 사용해야하는 버그 또는 "기능"인지 아직 확실하지 않습니다. handle(_ backgroundTasks) 메서드의 백그라운드 새로 고침 작업에서 userInfo 속성을 가져 오지 않으면이 문제가 발생합니다. 재산의 모든 접근은 작동합니다. 간단한 해결책은 오류를 없애기 위해 handle 메서드에서 backgroundTask.userInfo 메서드를 사용하여 userInfo: 매개 변수에 다음 백그라운드 새로 고침을 예약하는 것입니다.이 매개 변수는 nil을 다음 작업에 계속 할당합니다.

WKExtension.shared().scheduleBackgroundRefresh(withPreferredDate: refreshDate, userInfo: backgroundTask.userInfo) { (error) in 
    if let error = error { 
     print ("Background task error:\(error.localizedDescription)") 
    } 
} 

물론이 대안은 userInfo을 사용할 수 없음을 의미합니다. 더 나은 코드는 스케줄링 날짜 또는 작업 식별자와 같은 항목이나 그 둘 모두에 대한 [String:Any]의 사전과 같은 항목을 거기에 붙이는 것일 수 있습니다.

+0

고맙습니다. 그런 기괴한 문제. 그것이 해를 끼치고 있는지 확신 할 수는 없지만 디버깅 할 때 더 이상 볼 필요가 없다는 것에 감사드립니다. 나가 그것에 관하여가는 방법은 간단하게 userInfoAccess이라고 칭한 종류 수준 가변을 창조하고, 그 후에 다만하고있다 backgroundInfoAccess = backgroundTask.userInfo은 나의 배경 처리 업무를 처리한다. 이렇게하면 백그라운드 새로 고침 userInfo를 계속 사용할 수 있습니다. – Marconelly

관련 문제