gpt4 book ai didi

arrays - 将结构数组保存/检索到 iCloud

转载 作者:行者123 更新时间:2023-11-30 10:57:09 25 4
gpt4 key购买 nike

我实际上正在学习如何将数据保存到 iCloud。我能够毫无问题地保存/检索字符串/数字,但我有一个结构变量,我想从云中保存/检索,但我不知道如何做到这一点。我尝试了很多不同的方法,但没有结果。

也许有人可以给我一个可以从 iCloud 保存/检索此变量“Var2”的代码示例?

struct structure: Codable{
var a : String!
var b : String!
var c : String!
var d : String!
var e : Double!
}

var Var2 = [
structure(a: "-12.1", b: "5.9", c: "Hello", d: "2017-01-21 05:55:55", e: 5),
structure(a: "151.17", b: "-1.8", c: "All", d: "2018-04-27 07:54:25", e: 0)
]

如果您需要我的实际代码:

import UIKit
import CloudKit

class ViewController: UIViewController {


struct structure: Codable{
var a : String!
var b : String!
var c : String!
var d : String!
var e : Double!}


@IBAction func Button(_ sender: Any) {

let Var1 = "Have Fun :)"

let Var2 = [
structure(a: "-12.1", b: "5.9", c: "Hello", d: "2017-01-21 05:55:55", e: 5),
structure(a: "151.17", b: "-1.8", c: "All", d: "2018-04-27 07:54:25", e: 0)]



let MyRecord = CKRecord(recordType: "Test")

// Changing the next line to "Var2" give an error
MyRecord.setValue(Var1, forKey: "Content1")

CKContainer.default().privateCloudDatabase.save(MyRecord) { (record, error) in
guard record != nil else { return }
print("saved record")
}
}
}

最佳答案

正如评论中部分提到的,命名结构以大写字母开头,变量以小写字母开头,并将成员声明为非可选

struct Structure: Codable {
var a, b, c, d : String
var e : Double
}

最有效的解决方案是创建一个新的记录类型,其属性与结构成员相对应,并单独保存每个 Structure 实例

for item in var2 {    

let myRecord = CKRecord(recordType: "Structure")
myRecord["a"] = item.a as CKRecordValue
myRecord["b"] = item.b as CKRecordValue
// etc.
myRecord["e"] = NSNumber(value: item.e)
}
...

或者将 Content1 属性声明为 (NS)Data 并使用 JSONEncoder 对结构数组进行编码

 do {
let data = JSONEncoder().encode(var2)
let myRecord = CKRecord(recordType: "Test")
myRecord["Content1"] = data
} catch { print(error) }

关于arrays - 将结构数组保存/检索到 iCloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53838986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com