For using today extension, I override default directory with app group.
class NSCustomPersistentContainer: NSPersistentContainer {
override open class func defaultDirectoryURL() -> URL { var storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.YourApp") storeURL = storeURL?.appendingPathComponent("YourApp.sqlite") return storeURL! }
}
it's working fine : on my widget I could retrieve my Coredata information...
BUT I've notice that an error appear on the first time I install my app
returned error NSCocoaErrorDomain(512) with userInfo dictionary {
reason = "Failed to create file; code = 2";
it's not crashing app and could use Coredata but could you tell me how why this error on debug?
thanx a lot
Post
Replies
Boosts
Views
Activity
I develop an application for entreprise only with external purchase mechanisms : I do not understand if it's really possible or not.
If I read the article "3.1.3(e) Goods and Services Outside of the App", it seems is it possible but my application is refused because of this???
What is really possible and what is really forbidden? I sell service like training, advice, and custom development : functionalities inside app are different according to my client.
Hi All,
Why on Files I do not see my App Folder?
I check on debug and all my files exists in the document folder but on my iPad, I do not see my folder in Files?
thanx a lot
I develop a app with core data, to create invoices for individual use. I use Int64 ID (with increment) as primary key
Today, I would like to expand possibility with the same database on several iPads...
BUT I can't stay with Int64 ID because first iPad create index n°1 and second iPad create invoice n°1 too !
What is the best practice to change for a distributed system : create a new id with uuid string?
thanx a lot
I saw that when I work on testFlight or AppStore, UIDevice.current.identifierForVendor are not the same.
I changed my apple account (personnel account to company account) -> it will change UIDevice.current.identifierForVendor
now I need to change my computer, to migrate on MacMini M1, with a new certificate on Xcode : will it change all UIDevice.current.identifierForVendor ???
do you know all the parameters that change this value?
is there any way to hide "-" and keep only selection?
When I switch the tableview in mode isediting and allowsMultipleSelection, there is a delete button instead of selection choice
What is the best practice to have UIimage into cell that set the same width and same height
on CollectionView
cell size -> 200*200
Estimate size -> None
On cell
Uimage on cell
leading, trailing,bottom,top ---> to cell
even if I force the height and width, image do not set the same size of the cell the height is different????
I try with the delegate UICollectionViewDelegateFlowLayout to force size to 200*200 but no effect of UIimage inside
What can I do to have the same size on Uiimage into cell ?
1/ Signing & capabilities
background mode - > remote notification
cloud -> cloudkit @ container created
2/ coredata ->used with cloudkit & all attributes are optionals
3/ appDelegate
NSPersistentCloudKitContainer
viewContext.automaticallyMergesChangesFromParent = true
AND
it's not working on my two devices (iPhone & iPad) under iOs 15.0.2
What did I forget?
Today, I'm working without cloudkit (all data are in a local Coredata), with one database on my Xcode project but with 2 containers on app.delegate :
one for a test environment : with storeURL ---> test.sqlite
one for a production environment : with storeURL --> production.sqlite
Everything is ok, the test data, is really separate from production data.
Now, I try to use cloudkit functions : I change NSPersistentContainer to NSPersistentCloudKitContainer
it's working and I could use data on 2 iPads.
BUT if I switch the test to the prod, now the data from test environnement is duplicate on the production environnement.
what mistake am I making?
How could I use my two storeURL with cloudkit coredata?
Thanx for your help.
I have switch my database with cloudkit function.
I have two iPads : after few tests, the database was synchronize between the two devices.
But after checking all data, in one view, there are duplicate rows, : with the same UUID !!!
This error is not present in all views, just few ones...and I do only fetch for the moment, no create data
in debug the fetch show duplicate values, why I do not understand this behavior because on my database before using two ipad, I had only one Record for a element not twice???
myarray = try moc.fetch(ReferencesRequest)
same record present twice in the array after fetch
Hi All,
I have an application for iPad and iPhone, and now I would you to extend it with macOs Environnement.
What is the best practice to use my iOS app on MacOs?
I change my project with
I can Run the App on my MacMini with Xcode but when I archive my project on TestFlight, there is a message that tell me that is not available for macOS only iOS !!!
How could I archive with MacOs???
Hi All,
I work on a cross platform app, iOS/macOS.
All devises on iOS could synchronize data from Coredata : I create a client, I see him an all iOS devices.
But when I test on macOs (with TestFlight) the Mac app could not get any information from iOs devices.
On Mac, cloud drive is working because I could download and upload documents and share it between all devices, so the account is working but with my App on MacOS, there is no synchronisation.
idea????
Hi all,
I implement NSPersistentCloudKitContainer in AppDelegate, all settings (push notification, background mode, icloud, container etc...)
With two devices (iPad), the synchronisation works well but ONLY when I open App....
I do not understand why...I missed a setting somewhere????
Hi all,
I use CoreData with cloudkit.
After deployed development in production, I could sync data between test device via TestFlight.
I update a new entity in Coredata (table "Appareil"), what are the best practices to update cloudkit environnement because now, I have a lot of error when I test my app and sync is not available between devices.
Thanx a lot for your help.
UserInfo={NSLocalizedFailureReason=Request '896032F2-F210-4AAD-96CB-C4A31478F760' was aborted because the mirroring delegate never successfully initialized due to error: <CKError 0x281ba4360: "Partial Failure" (2/1011); "Failed to modify some records"; uuid = B71C0B7E-56EB-4FA7-9F06-E5D25DC447F4; container ID = "iCloud.fr.xxxx"; partial errors: {CD_FAKE_Appareil_99A4EBDA-F1F2-474B-9928-1F0685D244FA:(com.apple.coredata.cloudkit.zone:defaultOwner) = <CKError 0x281bbd9e0: "Invalid Arguments" (12/2006); server message = "Cannot create new type CD_Appareil in production schema"; op = 9BEAC4021C3657F9; uuid = B71C0B7E-56EB-4FA7-9F06-E5D25DC447F4>... 71 "Batch Request Failed" CKError's omited ...
I would like to implement notifications about NSPersistentCloudKitContainer
I find this classe but I receive no notifications in my app!?!
Do I need more settings to use it?
thanx for your help
import Combine
import CoreData
@available(iOS 14.0, *)
class SyncMonitor {
/// Where we store Combine cancellables for publishers we're listening to, e.g. NSPersistentCloudKitContainer's notifications.
fileprivate var disposables = Set<AnyCancellable>()
init() {
NotificationCenter.default.publisher(for: NSPersistentCloudKitContainer.eventChangedNotification)
.sink(receiveValue: { notification in
if let cloudEvent = notification.userInfo?[NSPersistentCloudKitContainer.eventNotificationUserInfoKey]
as? NSPersistentCloudKitContainer.Event {
// NSPersistentCloudKitContainer sends a notification when an event starts, and another when it
// ends. If it has an endDate, it means the event finished.
if cloudEvent.endDate == nil {
print("Starting an event...") // You could check the type, but I'm trying to keep this brief.
} else {
switch cloudEvent.type {
case .setup:
print("Setup finished!")
case .import:
print("An import finished!")
case .export:
print("An export finished!")
@unknown default:
assertionFailure("NSPersistentCloudKitContainer added a new event type.")
}
if cloudEvent.succeeded {
print("And it succeeded!")
} else {
print("But it failed!")
}
if let error = cloudEvent.error {
print("Error: \(error.localizedDescription)")
}
}
}
})
.store(in: &disposables)
}
}