mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-04-24 17:48:32 +02:00
WIP: corespotlight
This commit is contained in:
@@ -70,6 +70,9 @@
|
|||||||
B52DD1CC1BE1F94D00949AFE /* CoreStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */; };
|
B52DD1CC1BE1F94D00949AFE /* CoreStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */; };
|
||||||
B52DD1CD1BE1F94D00949AFE /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D372851A39CDDB00F583D9 /* TestEntity1.swift */; };
|
B52DD1CD1BE1F94D00949AFE /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D372851A39CDDB00F583D9 /* TestEntity1.swift */; };
|
||||||
B52DD1CE1BE1F94D00949AFE /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */; };
|
B52DD1CE1BE1F94D00949AFE /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */; };
|
||||||
|
B531CC4D1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B531CC4C1C22529300AD5104 /* CoreSpotlightSearchableObject.swift */; };
|
||||||
|
B531CC4E1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B531CC4C1C22529300AD5104 /* CoreSpotlightSearchableObject.swift */; };
|
||||||
|
B531CC4F1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B531CC4C1C22529300AD5104 /* CoreSpotlightSearchableObject.swift */; };
|
||||||
B54A6A551BA15F2A007870FD /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; };
|
B54A6A551BA15F2A007870FD /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; };
|
||||||
B5598BCC1BE2093D0092EFCE /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; };
|
B5598BCC1BE2093D0092EFCE /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; };
|
||||||
B56007111B3F6BD500A9A8F9 /* Into.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007101B3F6BD500A9A8F9 /* Into.swift */; };
|
B56007111B3F6BD500A9A8F9 /* Into.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007101B3F6BD500A9A8F9 /* Into.swift */; };
|
||||||
@@ -224,6 +227,7 @@
|
|||||||
B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchedResultsController+Convenience.swift"; sourceTree = "<group>"; };
|
B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchedResultsController+Convenience.swift"; sourceTree = "<group>"; };
|
||||||
B52DD1741BE1F8CC00949AFE /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
B52DD1741BE1F8CC00949AFE /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
B531CC4C1C22529300AD5104 /* CoreSpotlightSearchableObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreSpotlightSearchableObject.swift; sourceTree = "<group>"; };
|
||||||
B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchedResultsControllerDelegate.swift; sourceTree = "<group>"; };
|
B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchedResultsControllerDelegate.swift; sourceTree = "<group>"; };
|
||||||
B5548CD51BD65AE00077652A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
B5548CD51BD65AE00077652A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
B5548CD71BD65AE50077652A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; };
|
B5548CD71BD65AE50077652A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
@@ -374,6 +378,7 @@
|
|||||||
2F03A53519C5C6DA005002A5 /* CoreStore.h */,
|
2F03A53519C5C6DA005002A5 /* CoreStore.h */,
|
||||||
2F291E2619C6D3CF007AF63F /* CoreStore.swift */,
|
2F291E2619C6D3CF007AF63F /* CoreStore.swift */,
|
||||||
B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */,
|
B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */,
|
||||||
|
B531CC4B1C22524600AD5104 /* CoreSpotlight Indexing */,
|
||||||
B5E84EDA1AFF84500064E85B /* Setting Up */,
|
B5E84EDA1AFF84500064E85B /* Setting Up */,
|
||||||
B5E84EE21AFF84610064E85B /* Logging */,
|
B5E84EE21AFF84610064E85B /* Logging */,
|
||||||
B5E84EE91AFF846E0064E85B /* Saving and Processing */,
|
B5E84EE91AFF846E0064E85B /* Saving and Processing */,
|
||||||
@@ -437,6 +442,14 @@
|
|||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
B531CC4B1C22524600AD5104 /* CoreSpotlight Indexing */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
B531CC4C1C22529300AD5104 /* CoreSpotlightSearchableObject.swift */,
|
||||||
|
);
|
||||||
|
path = "CoreSpotlight Indexing";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
B56964D11B22FF700075EE4A /* Migrating */ = {
|
B56964D11B22FF700075EE4A /* Migrating */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -829,6 +842,7 @@
|
|||||||
B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */,
|
B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */,
|
||||||
B5E84EE81AFF84610064E85B /* CoreStoreLogger.swift in Sources */,
|
B5E84EE81AFF84610064E85B /* CoreStoreLogger.swift in Sources */,
|
||||||
B5E84F311AFF849C0064E85B /* WeakObject.swift in Sources */,
|
B5E84F311AFF849C0064E85B /* WeakObject.swift in Sources */,
|
||||||
|
B531CC4D1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */,
|
||||||
B5E84F101AFF847B0064E85B /* GroupBy.swift in Sources */,
|
B5E84F101AFF847B0064E85B /* GroupBy.swift in Sources */,
|
||||||
B5E84F201AFF84860064E85B /* DataStack+Observing.swift in Sources */,
|
B5E84F201AFF84860064E85B /* DataStack+Observing.swift in Sources */,
|
||||||
B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */,
|
B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */,
|
||||||
@@ -860,6 +874,7 @@
|
|||||||
files = (
|
files = (
|
||||||
B52DD1BE1BE1F94300949AFE /* NSProgress+Convenience.swift in Sources */,
|
B52DD1BE1BE1F94300949AFE /* NSProgress+Convenience.swift in Sources */,
|
||||||
B52DD1951BE1F92500949AFE /* NSError+CoreStore.swift in Sources */,
|
B52DD1951BE1F92500949AFE /* NSError+CoreStore.swift in Sources */,
|
||||||
|
B531CC4F1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */,
|
||||||
B52DD1C21BE1F94600949AFE /* MigrationManager.swift in Sources */,
|
B52DD1C21BE1F94600949AFE /* MigrationManager.swift in Sources */,
|
||||||
B52DD1AB1BE1F93900949AFE /* From.swift in Sources */,
|
B52DD1AB1BE1F93900949AFE /* From.swift in Sources */,
|
||||||
B52DD1BF1BE1F94600949AFE /* AssociatedObjects.swift in Sources */,
|
B52DD1BF1BE1F94600949AFE /* AssociatedObjects.swift in Sources */,
|
||||||
@@ -970,6 +985,7 @@
|
|||||||
B56321B61BD6521C006C9394 /* WeakObject.swift in Sources */,
|
B56321B61BD6521C006C9394 /* WeakObject.swift in Sources */,
|
||||||
B56321AC1BD6521C006C9394 /* Functions.swift in Sources */,
|
B56321AC1BD6521C006C9394 /* Functions.swift in Sources */,
|
||||||
B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */,
|
B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */,
|
||||||
|
B531CC4E1C22529300AD5104 /* CoreSpotlightSearchableObject.swift in Sources */,
|
||||||
B56321921BD65216006C9394 /* BaseDataTransaction+Querying.swift in Sources */,
|
B56321921BD65216006C9394 /* BaseDataTransaction+Querying.swift in Sources */,
|
||||||
B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */,
|
B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */,
|
||||||
B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */,
|
B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */,
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
//
|
||||||
|
// CoreSpotlightSearchableObject.swift
|
||||||
|
// CoreStore
|
||||||
|
//
|
||||||
|
// Copyright (c) 2015 John Rommel Estropia
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import CoreData
|
||||||
|
|
||||||
|
// MARK: - CoreSpotlightSearchableObject
|
||||||
|
|
||||||
|
public protocol CoreSpotlightSearchableObject: class {
|
||||||
|
|
||||||
|
/**
|
||||||
|
The object's index value for CoreSpotlight
|
||||||
|
*/
|
||||||
|
var coreSpotlightIndexValue: String? { get set }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
import CoreData
|
import CoreData
|
||||||
|
import CoreSpotlight
|
||||||
|
import MobileCoreServices
|
||||||
#if USE_FRAMEWORKS
|
#if USE_FRAMEWORKS
|
||||||
import GCDKit
|
import GCDKit
|
||||||
#endif
|
#endif
|
||||||
@@ -56,6 +58,7 @@ public final class AsynchronousDataTransaction: BaseDataTransaction {
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.isCommitted = true
|
self.isCommitted = true
|
||||||
|
|
||||||
let group = GCDGroup()
|
let group = GCDGroup()
|
||||||
group.enter()
|
group.enter()
|
||||||
self.context.saveAsynchronouslyWithCompletion { (result) -> Void in
|
self.context.saveAsynchronouslyWithCompletion { (result) -> Void in
|
||||||
@@ -65,6 +68,38 @@ public final class AsynchronousDataTransaction: BaseDataTransaction {
|
|||||||
group.leave()
|
group.leave()
|
||||||
}
|
}
|
||||||
group.wait()
|
group.wait()
|
||||||
|
|
||||||
|
guard #available(iOS 9.0, *) else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeJSON as String)
|
||||||
|
attributeSet.title = nextItem.0
|
||||||
|
attributeSet.contentDescription = nextItem.1
|
||||||
|
|
||||||
|
let item = CSSearchableItem(
|
||||||
|
uniqueIdentifier: nextItem.0,
|
||||||
|
domainIdentifier: "jp.eureka.sample",
|
||||||
|
attributeSet: attributeSet
|
||||||
|
)
|
||||||
|
CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(
|
||||||
|
[item],
|
||||||
|
completionHandler: { (error) -> Void in
|
||||||
|
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
for case (let object as CoreSpotlightSearchableObject) in self.context.insertedObjects {
|
||||||
|
|
||||||
|
object.coreSpotlightIndexValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// public var insertedObjects: Set<NSManagedObject> { get }
|
||||||
|
// public var updatedObjects: Set<NSManagedObject> { get }
|
||||||
|
// public var deletedObjects: Set<NSManagedObject> { get }
|
||||||
|
// public var registeredObjects: Set<NSManagedObject> { get }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user