Apple documentation on CoreSpotlight 휴식 :
는 CSSearchableItemAttributeSet 객체를 생성하고 인덱스 할 항목을 설명하는 속성을 지정합니다.
항목을 나타내는 CSSearchableItem 개체를 만듭니다. CSSearchableItem 객체에는 나중에 을 참조 할 수 있도록하는 고유 한 식별자가 있습니다.
도메인 식별자를 지정하면 여러 항목을 모아 그룹으로 관리 할 수 있습니다.
검색 가능한 항목과 속성 집합을 연결하십시오.
검색 가능한 항목을 색인에 추가하십시오. 여기
내가 그 방법 인덱스 간단한 참고 클래스 보여주는 간단한 예입니다 :
class Note {
var title: String
var description: String
var image: UIImage?
init(title: String, description: String) {
self.title = title
self.description = description
}
}
그런 다음 다른 함수에서 생성, 각 노트에 대한
CSSearchableItemAttributeSet
를 작성, 노트를 만들 속성 세트 및 인덱스 검색 항목의 컬렉션에서
CSSearchableItem
독특한 :
import CoreSpotlight
import MobileCoreServices
// ...
// Build your Notes data source to index
var notes = [Note]()
notes.append(Note(title: "Grocery List", description: "Buy milk, eggs"))
notes.append(Note(title: "Reminder", description: "Soccer practice at 3"))
let parkingReminder = Note(title: "Reminder", description: "Soccer practice at 3")
parkingReminder.image = UIImage(named: "parkingReminder")
notes.append(parkingReminder)
// The array of items that will be indexed by CoreSpotlight
var searchableItems = [CSSearchableItem]()
for note in notes {
// create an attribute set of type Text, since our reminders are text
let searchableItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
// If we have an image, add it to the attribute set
if let image = note.image {
searchableItemAttributeSet.thumbnailData = UIImagePNGRepresentation(image)
// you can also use thumbnailURL if your image is coming from a server or the bundle
// searchableItemAttributeSet.thumbnailURL = NSBundle.mainBundle().URLForResource("image", withExtension: "jpg")
}
// set the properties on the item to index
searchableItemAttributeSet.title = note.title
searchableItemAttributeSet.contentDescription = note.description
// Build your keywords
// In this case, I'm tokenizing the title of the note by a space and using the values returned as the keywords
searchableItemAttributeSet.keywords = note.title.componentsSeparatedByString(" ")
// create the searchable item
let searchableItem = CSSearchableItem(uniqueIdentifier: "com.mygreatapp.notes" + ".\(note.title)", domainIdentifier: "notes", attributeSet: searchableItemAttributeSet)
}
// Add our array of searchable items to the Spotlight index
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(searchableItems) { (error) in
if let error = error {
// handle failure
print(error)
}
}
이 예는 꿀벌이있다 n은 AppCoda's How To Use Core Spotlight Framework in iOS 9에서 적응했습니다.
출처
2016-07-27 14:59:09
JAL
데이터가 메시지입니까? 현재 어떤 속성을 설정하고 있습니까? 주제 또는 텍스트 내용? – Wain
왜 앱에서 .txt 파일을 디팝 토링 할 수 없습니까? 나는 이것이 귀하의 사건에 대한 해킹이 될 것이지만 귀하의 문제도 해결할 수 있음을 알고 있습니다. deeplink하려면 고유 한 식별자를 설정하고'- (BOOL) application : (UIApplication *) application continueUserActivity : (nonnull NSUserActivity *) userActivity restorationHandler : (null이 아닌 void (^) (NSArray * _Nullable)) restorationHandler {}' AppDelegate.m –
@Wain, 데이터는 이론적으로 모든 텍스트가 될 수 있으므로 사용자가 저장합니다. 길이는 임의로 지정할 수 있지만 보통 길이는 약 5000 자입니다. 항목이 웹에서 비롯된 것이라면 title과 thumbnailUrl을 설정하고 contentSources도 설정합니다. –