Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi [iOS]Vorhandenes keyValue wird nicht erkannt (https://www.delphipraxis.net/163805-%5Bios%5Dvorhandenes-keyvalue-wird-nicht-erkannt.html)

Union 17. Okt 2011 09:25

[iOS]Vorhandenes keyValue wird nicht erkannt
 
Ich habe einen "ImageOpenDialog" mit FMX auf dem iPhone programmiert. Jetzt sehe ich den Wald vor lauter Bäumen wohl nicht mehr: In meinem Delegate versuche ich die Informationen über das gewählte Image aus dem NSDictionary auszulesen. Ich erhalte aber immer eine Exception, obwohl der Schlüssel (und auch der Wert) definitiv existiert.
Delphi-Quellcode:
procedure ImgDelegate.imagePickerControllerDidFinish(ImagePickerController : UIImagePickerController; ImageInfo : NSDictionary);
var
  Image : UIImage;
begin
  NSLog(NSStr(PChar('Selected picture!')));
  NSLog(ImageInfo.Description);
  NSLog(ImageInfo.valueForKey(NSStr('@UIImagePickerControllerReferenceUrl')));
  ViewController.dismissModalViewControllerAnimated(True);
end;
Ausgabe von ImageInfo.Description:

Code:
2011-10-17 10:00:24.915 ImagePicker[1430:b303] {
    UIImagePickerControllerMediaType = "public.image";
    UIImagePickerControllerOriginalImage = "<UIImage: 0xa2841c0>";
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=1000000001&ext=JPG";
}
Und das passiert wenn ich den Schlüssel abfrage:
Code:
2011-10-17 10:00:25.851 ImagePicker[1430:b303] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFDictionary 0x513a1a0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key UIImagePickerControllerReferenceUrl.'
Was mache ich falsch?

wurzelzwerg 17. Okt 2011 10:44

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Mal ne blöde Frage.
Was ist das fürn Projekt wo UIImage, NSDictionary, NSLog etc. zur Verfügung steht?

Union 17. Okt 2011 10:48

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Na ganz normal FMI, mit XE2. Da kann man mit Pascal fast alles machen, was mit objc auch geht, solange es bereits geparsed wurde.

Und da FM nur die allernötigsten Operationen zur Verfügung stellt (d.h. nicht OS-Spezifisches) muss man es eben selber programmieren.

wurzelzwerg 17. Okt 2011 10:58

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Hä? :o
Muss man da irgenwas umschalten?
Ich bekomm hier kein NSLog hin.
Würdest du mal ein kleines Beispiel anhängen, damit ich den Unterschied zu meinem Kram sehe?

Union 17. Okt 2011 11:07

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Delphi-Quellcode:
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
{$ENDIF}

uses
  ... {$ifdef FPC}IPhoneAll, {$endif}...

Union 17. Okt 2011 11:42

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Und mein eigentliches Problem konnte ich auch lösen. Tja, wenn man die gefühlten 1 Million Stringdatentypen von objc vermischt :wall:

So geht's:
Delphi-Quellcode:
procedure ImgDelegate.imagePickerControllerDidFinish(ImagePickerController : UIImagePickerController; ImageInfo : NSDictionary);
var
  Image : UIImage;
  URL : NSUrl;
begin
  NSLog(NSStr(PChar('Selected picture!')));
  NSLog(ImageInfo.Description);
  NSLog(NSStr(PChar(Format('Count: %d', [ImageInfo.Count]))));
  URL := ImageInfo.valueForKey(UIImagePickerControllerReferenceURL);
  NSLog(URL.absoluteString); // "assets-library://asset/asset.JPG?id=1000000001&ext=JPG"
  ViewController.dismissModalViewControllerAnimated(True);
end;
Als nächstes kommt dann das Einlesen des Bildes über UIImagePickerControllerOriginalImage dran. Da freu ich mich schon besonders drauf, ohne Syntaxcheck und Codevervollständigung :stupid:

wurzelzwerg 17. Okt 2011 12:26

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Pfff. Da kann man ja gleich mit XCode/obj-c programieren :roll:

Union 17. Okt 2011 12:31

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Ja, mit objc geht es besser, weil man da eine funktionierende IDE hat. Die Pascal-Unterstützung hat ja Apple aus XCode leider wieder entfernt.

Union 20. Okt 2011 16:31

AW: [iOS]Vorhandenes keyValue wird nicht erkannt
 
Uff, es geht jetzt alles. Hier mal ein Video meiner Spielerei (4,7 MB) http://www.datafilehost.com/download-30e2fbb1.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.

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