Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何施放阵列<;字符串>;满是字符串的数组 在使用CuldKIT时,所有类型都需要Objy-C基础类。由于CloudKit中使用的大多数类型都是从Swift桥接到Obj-C的,因此没有任何问题(即,将[key]=1记录为NSNumber),但我在将数组转换为适当的CloudKit类型(CK仪表板中的字符串列表)时遇到问题。我想_Ios_Swift_Cocoa_Cloudkit - Fatal编程技术网

Ios 如何施放阵列<;字符串>;满是字符串的数组 在使用CuldKIT时,所有类型都需要Objy-C基础类。由于CloudKit中使用的大多数类型都是从Swift桥接到Obj-C的,因此没有任何问题(即,将[key]=1记录为NSNumber),但我在将数组转换为适当的CloudKit类型(CK仪表板中的字符串列表)时遇到问题。我想

Ios 如何施放阵列<;字符串>;满是字符串的数组 在使用CuldKIT时,所有类型都需要Objy-C基础类。由于CloudKit中使用的大多数类型都是从Swift桥接到Obj-C的,因此没有任何问题(即,将[key]=1记录为NSNumber),但我在将数组转换为适当的CloudKit类型(CK仪表板中的字符串列表)时遇到问题。我想,ios,swift,cocoa,cloudkit,Ios,Swift,Cocoa,Cloudkit,将[key]=([myString]作为[NSString])记录为NSArray 会有用的,但没有这样的运气。我如何转换这个?var str=“你好,游乐场” var str = "Hello, playground" var arrayString:[String] = [str] var arrayNSString = NSMutableArray() for p in 0..<arrayString.count { arrayNSString.add(arrayStri

将[key]=([myString]作为[NSString])记录为NSArray

会有用的,但没有这样的运气。我如何转换这个?

var str=“你好,游乐场”
var str = "Hello, playground"

var arrayString:[String] = [str]

var arrayNSString = NSMutableArray()

for p in 0..<arrayString.count
{
   arrayNSString.add(arrayString[p] as NSString)
}
变量arrayString:[String]=[str] var arrayNSString=NSMutableArray()
对于0中的p..仅桥接将与
NSArray
array
构造函数一起工作:

let a = ["a", "bc", "def"]
let nsa = NSArray(array: a)
nsa[0] is NSString // *** true ***

这里真正的问题是下标被破坏了,您可以使用
setObject(forKey:)
来使用本机Swift类型

编辑:
我错了,
setObject(forKey:)
不起作用,但是我通过使用
setValue(forKey:)
暂时解决了这个问题。我还扩展了
CKRecord
,添加了
下标
,直到苹果解决了这个问题

extension CKRecord {
    @nonobjc
    subscript(key: String) -> Any? {
        set {
            setValue(newValue, forKey: key)
        }
        get {
            return value(forKey: key)
        }
    }
}

将数组映射到一个新的数组对于应该被桥接的类型来说似乎有很多开销。更简单的方法是
让nsa=NSArray(array:a.map({$0 as NSString}))
。@Grimxn桥接是否确保
让nsa1=NSArray(array:a)
NSString
的数组?它不是下标,但Swift本机类型不采用该CKRecordValue。与下标一样,<代码> SETObjor(FordK::)/Cl>也不适用于SWIFT 3而不将SWIFT类型强制为Obj-C基金会类型。您是对的。我刚刚查看了我的生产项目,我可以看到我使用的是
setValue(forKey:)
。我会更新我的答案作为替代。