2017-03-02 4 views
0

Ich versuche Sirikit zu verwenden, um eine Rechnung, die ich auf Firebase gespeichert habe, zurückgeben. Es gibt die Rechnung, die es findet, nicht zurück. Dies ist meine Handle-Funktion. Ich verwende getBills Funktion meine Rechnungen aus der Datenbank zu erhalten:SIRIKIT keine Rechnung zurück

func handle(searchForBills intent: INSearchForBillsIntent, completion: @escaping (INSearchForBillsIntentResponse) -> Void) { 
     var arrayOfBills: [INBillDetails] = [] 
     APIManager.getBills { (success, bills) in 
      if(success) { 
      for bill in bills { 
       if (bill.type == intent.billType.rawValue) { 
        var nickname: INSpeakableString = INSpeakableString(identifier: bill.billPayeeNickName, spokenPhrase: bill.billPayeeNickName, pronunciationHint: bill.billPayeeNickName) 
        var organizationalName: INSpeakableString = INSpeakableString(identifier: bill.billPayeeOrganzationalName, spokenPhrase: bill.billPayeeOrganzationalName, pronunciationHint: bill.billPayeeOrganzationalName) 

        var billPayee: INBillPayee = INBillPayee(nickname: nickname, number: bill.billPayeeAccountNumber, organizationName: organizationalName)! 
        var nsDecimalTotal: NSDecimalNumber = NSDecimalNumber(string: bill.total) 
        var amountDueInCurrency: INCurrencyAmount = INCurrencyAmount(amount: nsDecimalTotal, currencyCode: "$") 

        var dateC: DateComponents = DateComponents(calendar: Calendar.current , timeZone: TimeZone.current, era: 1, year: 2017, month: 5, day: 23, hour: 2, minute: 2, second: 2, nanosecond: 2, weekday: 3, weekdayOrdinal: 3, quarter: 3, weekOfMonth: 23, weekOfYear: 33, yearForWeekOfYear: 44) 

        var billToReturn = INBillDetails(billType: INBillType(rawValue: bill.type)!, paymentStatus: INPaymentStatus(rawValue: bill.status)!, billPayee: billPayee, amountDue: amountDueInCurrency, minimumDue: amountDueInCurrency, lateFee: amountDueInCurrency, dueDate: dateC, paymentDate: dateC) 
        arrayOfBills.append(billToReturn!) 
       } 
      } 
       print("success") 
       var response = INSearchForBillsIntentResponse(code: .failure, userActivity: nil) 
       //response.bills = arrayOfBills 
       completion(response) 
      } 
      else { 
       print("failed") 
       completion(INSearchForBillsIntentResponse(code: .failure, userActivity: nil)) 
      } 
    } 

Antwort

0

Ihre INSearchForBillsIntentResponse mit „failure“ auf beiden Bedingungen initiiert wird. Sie haben keinen Erfolgscode - Dies könnte dazu führen, dass Siri die Rechnung nicht zurückgibt. Sie müssen die Zuordnung der Rechnungen zur Antwort auch auskommentieren.

Ich hatte auch einige Probleme mit den Bills-Funktionen, aber es sieht so aus, als ob die meisten Fehler dafür mit iOS 10.3 Beta 4 behoben werden (Obwohl die SearchForBills-Benutzeroberfläche nicht so toll ist).