2015-09-14 15 views
6

Sử dụng DB trong một ứng dụng nhanh. Tôi đang cố gắng lọc kết quả bằng một biến vị ngữ như sau:Tìm kiếm vị ngữ đối tượng của đối tượng địa lý không hợp lệ

class func fetchUsersFromDB(usersId: [String]) -> [User]{ 
     var users = [User]() 
     let realm = Realm() 
     let predicate = NSPredicate(format: "objectId IN %@", argumentArray: usersId) 
     var allUsers = realm.objects(User).filter(predicate) 
     users = Array(allUsers) 
     return users 
    } 

Nhưng điều này sẽ không biên dịch. Tôi gặp lỗi này:

Terminating app due to uncaught exception 'Invalid value', reason: 'IN clause requires an array of items' 

Bất kỳ ý tưởng nào tôi đang làm sai?

+1

Nó phải được biên dịch. Bạn đang nhận được ngoại lệ thời gian chạy là – Shripada

+1

Dòng số 377, trong https://github.com/realm/realm-cocoa/blob/master/Realm/RLMQueryUtil.mm cho biết, không có hỗ trợ cho Swift Array, chúng không xác nhận với NSFastEnumeration .. – Shripada

+0

Có cách nào khác không? Tôi có nên lặp lại truy vấn của mình cho mỗi chuỗi trong mảng không? – denislexic

Trả lời

5

Xoá nhãn argumentArray:, như với nó, bạn đang gọi điện thoại initializer sai cho NSPredicate:

let predicate = NSPredicate(format: "objectId IN %@", usersId)

+0

Trong phiên bản XCode mới nhất, tính năng này không hoạt động. Tôi có lỗi này "Thiếu đối số nhãn 'đối sốArray:' trong cuộc gọi". Bạn có thấy giống nhau không? – StackOverflower

0

Tính Swift 3, chỉ cần sử dụng Array(usersId) thay vì usersId.

Các vấn đề liên quan