2015-05-01 1 views
0

enter image description hereXcode 6.3.1 Swift 1,2 библиотека wherekey не может быть вызван

Недавно к сведению, что wherekey на PFQuery не работает. Я пробовал 3 подхода, но все провалилось. Я использую parse-library-1.7.2 на Xcode 6.3.

Ошибка для approach1: Невозможно вызвать 'whereKey' со списком аргументов типа '(String, AnyObject)'

Ошибка для approach2: '? Строка' не конвертируется в 'StringLiteralConvertible'

Ошибка для подхода 3: «AnyObject?» не конвертируется в 'String'

Код выглядит следующим образом. Кто-нибудь может помочь с этим, пожалуйста? Заранее спасибо.

// Define the query that will provide the data for the table view 
class MyController: PFQueryTableViewController { 
override func queryForTable() -> PFQuery { 
    var query = PFQuery(className: "Ticket") 
    //Approach 1 
    query.whereKey(sellerIdKey, equalTo: currentPhoneUser["objectId"]!) 

    //Approach 2 
    if let sellerId = currentPhoneUser["objectId"] as? String { 
     query.whereKey(sellerIdKey, equalTo: sellerId) 
     query.orderByDescending("createdAt") 
     return query 
    } else { 
     fatalError("Can't get Object Id of this user") 
    } 

    //Approach 3 
    if let sellerId = currentPhoneUser["objectId"] as! String { 
     query.whereKey(sellerIdKey, equalTo: sellerId) 
     query.orderByDescending("createdAt") 
     return query 
    } else { 
     fatalError("Can't get Object Id of this user") 
    } 
} 

} 
+0

Какую версию разбора вы используете? См. Эту проблему с 'whereKey', которая связана с версией. http://stackoverflow.com/questions/28444621/parse-pfquery-wherekeynotequalto-is-not-working-for-pfuser-objects –

+0

Также http://stackoverflow.com/questions/22265170/parse-ios-wherekey-using -объектив (я не отмечаю дубликаты, поскольку я очень мало знаю об библиотеке или быстро) –

+0

Каков тип 'currentPhoneUser'? –

ответ

1

Получается, что это была быстрая проблема 1.2. How to cast AnyObject? to String in Swift 1.2

Ниже мое окончательное решение, которое компилирует:

override func queryForTable() -> PFQuery { 
    var query = PFQuery(className: "Ticket") 
    let objectId = currentPhoneUser?["objectId"] as? String 
    if let constObjectId = objectId { 
     query.whereKey(sellerIdKey, equalTo: constObjectId) 
    } else { 
     fatalError("Cannot find Object Id of current user") 
    } 
    return query 
}