iCloudのdatabaseを読み込めない(アカウント認証エラー?)
解決したいこと
iCloud連携するアプリを作ってみたくて勉強中なのですが、クラウドのデータベースからの読み込みができません。
ApplicationDataのinit()でデータベースの読み込みを行うようにしているのですが、シミュレータでビルドするとコンソールに読み込み失敗のエラーが出ます。
エラーメッセージを読む限りアカウント認証エラーのようなのですが、解決策を教えてください。
発生している問題・エラー
Error read country <CKError 0x600000c74b10: "Not Authenticated" (9/1002); "This request requires an authenticated account">
該当するソースコード
class ApplicationData:ObservableObject{
@Published var countryList : [CountryViewModel] = []
@Published var cityList : [CityViewModel] = []
var database : CKDatabase!
init(){
let container = CKContainer(identifier: "cityList")
database = container.privateCloudDatabase
Task(priority:.high){
await readCountries()
}
}
func readCountries()async {
let predicate = NSPredicate(format: "TRUEPREDICATE") // all true
let query = CKQuery(recordType: "Countries", predicate: predicate)
do{
let list = try await database.records(matching: query,inZoneWith: nil,desiredKeys: nil,resultsLimit: 0)
await MainActor.run{
countryList = []
for (_,result) in list.matchResults{
if let record = try? result.get(){
let newCountry = Country(name: record["name"], record: record)
let newItem = CountryViewModel(id: record.recordID, country: newCountry)
countryList.append(newItem)
}
}
countryList.sort(by: {$0.countryName < $1.countryName})
}
} catch {
print("Error read country \(error)")
}
}
}
自分で試したこと
sign&capabilityパネルのcontainer名は赤字になっていないので、名称は問題ないと思います。
ただBundle Identifierをそっくり使うと赤字になってしまうので、少し変えています。
0