2017-02-20 152 views
0

我試圖編寫一個查詢在表中查找,只返回已存儲在數組中的objectId的結果。解析containsIn查詢不返回結果

在後端我的陣列列:

let currentUser = PFUser.current() 
let allSelectedPacksArray: NSMutableArray = currentUser?["allSelectedPacks"] as! NSMutableArray 
print(allSelectedPacksArray) 

安迪查詢:

let query = PFQuery(className: "Pack") 
query.order(byAscending: "packName") 
query.whereKey("objectId", containedIn: [allSelectedPacksArray]) 
query.fromLocalDatastore() 

if error != nil || objects?.isEmpty == true { 
print("theres no objects to be had") 
} else if let items = objects { 

對象爲空,並且控制檯打印:

theres no objects to be had 

打印(allSelectedPacksArray)返回以下:

(
    tW4qPPdKSp, 
    HnwTkSwcZc, 
    zbhe0Kt59Z 
) 

所以列中包含的數據,這是gettable

當我刪除containedIn線一切正常。不知道我在這裏做錯了什麼。我還沒有使用NSMutable數組,但似乎是我必須將數組設置爲。

如果我不投它作爲NSMutable陣列,如:

let currentUser = PFUser.current() 
let allSelectedPacksArray = currentUser?["allSelectedPacks"] 
print(allSelectedPacksArray) 

控制檯打印:

Optional(<__NSArrayM 0x60800005a9d0>(
tW4qPPdKSp, 
HnwTkSwcZc, 
zbhe0Kt59Z 
) 
) 

謝謝指導。

回答

0

的這裏的問題是使用數組方括號括起的。

從[allSelectedPacksArray]中刪除[],並且只有allSelectedPacksArray和所有的作品。

這很奇怪,因爲代碼會提示括號。但它的工作原理。

0

這是因爲它是可選的,如控制檯中所述,這是從您的聲明的?部分。如果您將其更改爲!,您將看到預期結果。

let allSelectedPacksArray = currentUser?["allSelectedPacks"] 

應該變成:

let allSelectedPacksArray = currentUser!["allSelectedPacks"] 
+0

Nah這不會做任何相同的結果。 – WanderingScouse