После некоторого интенсивного поиска и мозгового штурма я не могу найти решение, поэтому давайте посмотрим, имеет ли Stack Overflow магическое решение, которое мне нужно. Я использую структуру «Контакты» для получения дат от контакта. Однако это хорошо работает, но мне нужно сортировать даты, чтобы это работало. В результате я extending
a Array
CNContact
, а внутри расширения у меня есть функция для выполнения моей работы. Ошибок не появляется в Issue Navigator
, но когда я строю, я получаю сообщение об ошибке Report Navigator
, говоря Command Failed due to signal: Segmentation Fault 11
. Я действительно верю, что проблема связана с моим использованием Generics, потому что навигатор отчетов указывает на эту строку, и мой googling предполагает, что именно здесь возникает проблема, но у меня нет обходных решений. (Я очень подозреваю это, но я не совсем уверен.)Команда Ошибка из-за сигнала: Сегментация Неисправность 11 - Xcode 8 Swift 3
Позвольте поделиться своим кодом с вами: Это внутри моего расширения массива CNContacts.
typealias ContactDate = CNLabeledValue<NSDateComponents>
func filteredAndSortedDates() -> [ContactDate : CNContact] { // Error occurs on this line according to the issue.
var allDates: [ContactDate : CNContact] = [:]
var sortedDates: [ContactDate: CNContact] = [:]
for contact in self {
if contact.isKeyAvailable(CNContactDatesKey) {
for date in contact.dates {
allDates[date] = contact
}
}
}
for (key, value) in (Array(allDates).sorted {
date1, date2 in
if date1.key.value.month == date2.key.value.month {
return date1.key.value.day < date2.key.value.day
} else {
return date1.key.value.month < date2.key.value.month
}
}) {
sortedDates[key] = value
}
return sortedDates
}
Что такое 'self' в этом примере? – Aaron
@Aaron Это [CNContact], потому что помните, что это внутри расширения массива CNContacts? – Harish
@Aaron Добавьте ответ, это работает! – Harish