2016-11-11 99 views
1

我的應用程序崩潰了我的循環for participant in event.attendees!的聲明。我對swift相對比較陌生,並且明白,如果我檢查參加者陣列不是零,那麼我可以自由地展開它。我在這裏誤解了什麼?爲什麼force Unwrapping給我一個EXC_BREAKPOINT(SIGTRAP)錯誤?

private static func parseParticipants(event: EKEvent) -> [Attendee] { 
    var participants = [Attendee]() 

    if(event.attendees != nil && event.attendees?.count != 0) { 
     for participant in event.attendees! { 
      let participantName = parseEKParticipantName(participant) 

      let isRequiredParticipant = participant.participantRole == EKParticipantRole.Required 
      let hasAccepted = participant.participantStatus == EKParticipantStatus.Accepted 
      let attendee = Attendee(name: participantName, email: participant.URL.resourceSpecifier!.lowercaseString, required: isRequiredParticipant, hasAccepted: hasAccepted) 
      participants.append(attendee) 
     } 
    } 
    return participants 
} 
+1

我已經在操場上試過這個簡單的例子,它工作正常。 http://paste.ofcode.org/vc6q8kYyYq5Sk5HjqNSrAf 你能提供更多細節嗎? – ArG

+0

@ArG它也適用於我,但我的一些用戶正在發送指向此代碼行的崩潰報告。我一直無法複製到目前爲止的錯誤。 – Deco

回答

1

原來這不是關於力展開,但是當它包含一個字符串包含一個"字符是由於EKParticipant.url的財產返還爲零。

let attendee = Attendee(name: participantName, email: participant.URL.resourceSpecifier!.lowercaseString, required: isRequiredParticipant, hasAccepted: hasAccepted)

我們用它來訪問參與者電子郵件,但任何讀或寫操作的url導致崩潰,所以我們採取了EKParticipant.description性能和使用正則表達式解析的電子郵件。

let participantEmail = participant.description.parse(pattern: emailRegex).first ?? ""

0

如何使用可選綁定?

if let attendees = event.attendees && attendees.count > 0 { 

} 
+0

我給了這個去,但不幸的是沒有工作。 這正是蘋果的SIGTRAP描述所描述的主要原因,所以我很驚訝它沒有。 – Deco

相關問題