Hi Nuno,

   Can you save and restore a simple NSObject, say an NSString?. If so, your problem is probably with converting the QVariant to NSObject. I have not used Qt with iOS yet so I don't have any deeper help than that, sorry!

   However, Maybe there are helper functions you need to write first? Could you use a JSON converter to represent your QVariant as an (NS)string for storage?

Colin

On 11/15/18 1:31 PM, Nuno Santos wrote:
Colin,

Thanks for your reply.

While you are right considering the code I have posted here, the truth is that in my actual code I have the setObject. But since I have more stuff going on I didn’t want to flood the list with code:

void Settings::setSharedKey(QString key, QVariant value)
{
    if (defaults==nil)
        defaults = [[NSUserDefaults alloc] initWithSuiteName:@“group.com.acme.app"];

    [defaults setObject:[ISettingsManagerCocoaHelper variantToNSObject:value] forKey:key.toNSString()];
    [defaults synchronize];
}

I’m still struggling with this. I can’t have the settings saved. I’m tired to googling and trying stuff.

Any ideas? Do you have anything similar?

Thanks!

Regards,

Nuno

On 15 Nov 2018, at 17:17, Colin Worth <jlk2...@gmail.com <mailto:jlk2...@gmail.com>> wrote:

Hi Nuno,
   You are missing a line, something like:

   [defaults setValue:object forKey:key]

in setSharedKey.


*From: *Nuno Santos <nunosan...@imaginando.pt <mailto:nunosan...@imaginando.pt>> *Subject: **[Interest] Qt iOS / App Groups / NSUserDefaults initWithSuiteName / Not persisting*
*Date: *November 14, 2018 at 7:24:06 AM AST
*To: *"interest@qt-project.org <mailto:interest@qt-project.org> Interest" <interest@qt-project.org <mailto:interest@qt-project.org>>


Hi,

I’m trying to persist data in a App Group on Qt iOS app to share data between a standalone app and app extension.

I have been reading on how to do it and apparently is dead simple -> https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW6

The problem is that it is not persisting data….

I’m starting to question the model I’m following in terms of code. I have my Settings manager in C++. What I have done was to create a SettingsCocoa.mm file that does what is below.

In a app session, the value is persisted but as soon as I start the app again, the value is null.

As anyone experienced similar issues before? Any ideas would be highly appreciated.

Thanks in advance.

Best regards,

Nuno


*#include "Settings.h"*
*
*
*#import <Foundation/Foundation.h>*
*#include <QDebug>*
*
*
*static NSUserDefaults *defaults = nil;*
*
*
*QVariant Settings::sharedKey(QString key, const QVariant &defaultValue) const*
*{*
*    if (defaults==nil)*
*        defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.acme.app"];*

*    NSObject *value = [defaults valueForKey:key.toNSString()];*
*    NSLog(@"get object: %@", value);*
*}*
*
*
*void Settings::setSharedKey(QString key, QVariant value)*
*{*
*    if (defaults==nil)*
*        defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.acme.app"];*
*
*
*    NSObject *object = [ISettingsManagerCocoaHelper variantToNSObject:value];*
*    NSLog(@"set object: %@", object);*
*
*
*    sharedKey(key, value);*
*
*
*    [defaults synchronize];*
*}*


_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to