簡體   English   中英

如何轉換數組 <String> 到充滿NSString的NSArray

[英]How to cast Array<String> to NSArray full of NSString

在使用CloudKit時,所有類型都必須是Objective-C基礎類。 由於CloudKit中使用的大多數類型都是從Swift橋接到Obj-C的,所以沒有任何問題(即record[key] = 1 as NSNumber ),但是我在將Array<String>轉換為適當的CloudKit類型時遇到了麻煩( CK信息中心中的字符串列表)。 我估計

record[key] = ([myString] as [NSString]) as NSArray

會工作,但沒有運氣。 我該如何轉換呢?

只需橋接即可與NSArrayarray構造函數一起使用:

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

var arrayString:[String] = [str]

var arrayNSString = NSMutableArray()

for p in 0..<arrayString.count
{
   arrayNSString.add(arrayString[p] as NSString)
}

希望這可以幫助。

真正的問題是下標已損壞,您可以使用setObject(forKey:)來使用本機Swift類型!

編輯:
我錯了, setObject(forKey:)不起作用,但是我設法通過使用setValue(forKey:)暫時解決了此問題。 我還擴展了CKRecordsubscript ,直到蘋果公司解決此問題為止。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM