Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS do not Backup Flag (https://www.delphipraxis.net/175729-do-not-backup-flag.html)

Mavarik 12. Jul 2013 10:22

do not Backup Flag
 
Hallo!

Hat das:
Code:
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
 
{
 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
 
 
 
    NSError *error = nil;
 
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
 
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];
 
    if(!success){
 
        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
 
    }
 
    return success;
 
}
schon jemand in Delphi umgesetzt?

Mavarik :coder:

Mavarik 15. Jul 2013 13:55

AW: do not Backup Flag
 
*hust push*

Echt niemand?

Union 15. Jul 2013 16:26

AW: do not Backup Flag
 
Schau Dir doch mal iOSApi.Foundation.NSURL.setResourceValue an. Und dann siehst Du gleich oder nach einigen Stunden den fiesen Fehler.

Mavarik 15. Jul 2013 22:34

AW: do not Backup Flag
 
Zitat:

Zitat von Union (Beitrag 1221709)
Schau Dir doch mal iOSApi.Foundation.NSURL.setResourceValue an. Und dann siehst Du gleich oder nach einigen Stunden den fiesen Fehler.

Fehler?

Union 15. Jul 2013 23:04

AW: do not Backup Flag
 
Hier steht die Funktion beschrieben:
Zitat:

Zitat von Apple
setResourceValue:forKey:error:

Sets the resource property of the URL specified by a given key to a given value.
- (BOOL)setResourceValue: (id)value forKey: (NSString *)key error: (NSError **)error
Parameters

value

The value for the resource property defined by key.
key

The name of one of the URL’s resource properties.
error

The error that occurred in the case that the resource value cannot be set.

Return Value

YES if the resource property named key is successfully set to value; otherwise, NO.

Im Source vom NSURL Interface in iOSapi.Foundation ist allerdings der Error-Paramter NICHT als var deklariert (in OBJ-C **). Entweder der Importer von EMBA ist fehlerhaft, oder - schlimmer - die importieren die Klassen von Hand und können kein Objective-C. Das ist übrigens nicht die einzige Stelle.

Mavarik 17. Jul 2013 12:32

AW: do not Backup Flag
 
OK mag ja sein... ich kanns auch nicht, daher meine Frage...

Das:
TNSURL.Wrap(TNSURL.OCClass.alloc).setResourceValue (1,NSURLIsExcludedFromBackupKey,NIL);

Hab ich gefunden, aber wo gebe ich jetzt die URL... Sprich Dateiname an und da die konstante in Firemonkey nicht definiert ist, was muss ich für "NSURLIsExcludedFromBackupKey" angeben?

Mavarik

Union 17. Jul 2013 12:40

AW: do not Backup Flag
 
So sollte es gehen, aber ich weiß nicht ob es funktioniert wenn man die NSURL Klasse noch nicht korrigiert hat. Ich weiss auch nicht ob das Flag gesetzt wird, da die Funktion zum Auslesen des Flags in iOS nicht funktioniert. Man muss bei den doofen Apple Funktionen oft beides abfragen (NSError UND Rückgabewert) denn es kann sein dass eine Funktion YES zurückgibt aber fehlgeschlagen ist, dann ist der NSError erzeugt und gefüllt.
Delphi-Quellcode:
function SetBackupFlag(AFileName: string; ABackup: boolean): boolean;
var
  URL : NSUrl;
  Err : NSError;
begin
  URL := TNSURL.Wrap(TNSURL.OCClass.fileURLWithPath(NSStr(AFileName)));
  result := URL.setResourceValue(TNSNumber.OCClass.numberWithBool(not ABackup), NSStr('NSURLIsExcludedFromBackupKey'), err) and (err = nil);
end;

Mavarik 17. Jul 2013 12:53

AW: do not Backup Flag
 
Zitat:

Zitat von Union (Beitrag 1221842)
So sollte es gehen, aber ich weiß nicht ob es funktioniert wenn man die NSURL Klasse noch nicht korrigiert hat. Ich weiss auch nicht ob das Flag gesetzt wird, da die Funktion zum Auslesen des Flags in iOS nicht funktioniert. Man muss bei den doofen Apple Funktionen oft beides abfragen (NSError UND Rückgabewert) denn es kann sein dass eine Funktion YES zurückgibt aber fehlgeschlagen ist, dann ist der NSError erzeugt und gefüllt.
Delphi-Quellcode:
function SetBackupFlag(AFileName: string; ABackup: boolean): boolean;
var
  URL : NSUrl;
  Err : NSError;
begin
  URL := TNSURL.Wrap(TNSURL.OCClass.fileURLWithPath(NSStr(AFileName)));
  result := URL.setResourceValue(TNSNumber.OCClass.numberWithBool(not ABackup), NSStr('NSURLIsExcludedFromBackupKey'), err) and (err = nil);
end;

LOL...

1. Zuerst mal Danke...
2. LOL... Das geht? Ne fehlende Konstante über den Namen holen...?
3. numberWithBool LOL 2...

Mal ehrlich... Wie soll man auf so was kommen?
Gibt's da nen PDF File "Using iOS Wrapper for Delphi Dummys"?

Mavarik :coder:

PS.: iOS zeigt mir echt jeden Tag, dass ich keine Ahnung habe... Zum k***zen

Union 17. Jul 2013 14:04

AW: do not Backup Flag
 
Ja das sollte gehen:
Code:
#import "Foundation/NSUrl.h"
NSLog(@"Wert '%@'", NSURLIsExcludedFromBackupKey);
Zitat:

Zitat von XCode Debugger
2013-07-17 14:58:44.666 aaa[861:c07] Wert 'NSURLIsExcludedFromBackupKey'

Bzw. in Delphi:
Delphi-Quellcode:
ShowMessage(CocoaNSStringConst('/System/Library/Frameworks/Foundation.framework/Foundation', 'NSURLIsExcludedFromBackupKey').UTF8String);

Jens Fudge 16. Dez 2013 08:50

AW: do not Backup Flag
 
Hi,
I'm sorry for writing english. I read German fairly ok, but you wouldnt understand me writing it.
I have two questions regarding this issue:

1) I get a compiler Error that Incompatible types: 'PPointer' and 'NSError'.

2) When are you supposed to call this code? I am deploying my iOS app with files, but I cannot seem to call any code before the app executes the first time.

Thanks for your help, and once again sorry I write in English, I hope you understand me ok. ;-)

Jens Fudge


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz