Kleines Tool, große Hilfe (Xcode Interface shell command)

N

NixApple

Neues Mitglied
Thread Starter
Dabei seit
12.10.2009
Beiträge
12
Reaktionspunkte
0
Hallo Xcoder :)

Ich bin sehr frisch in der Materie und möchte aber ein kleines Tool schreiben.
ich muss oft Medienkennwörter im Quicktime player eingeben. Seit dem ich aber das neue 10.6 habe, muss ich den quicktime x benutzen, bei dem man nicht mehr die Möglichkeit hat bequem über die Einstellungen die Kennwörter einzugeben, sondern jedes einzelnd über Terminal.
So nun dachte ich mir, da wär es doch praktisch so ein kleines eingabetool zu schreiben und hab mich ein wenig mit cocoa auseinander gesetzt.
Ich bin nun so weit gekommen, dass ich keine Fehermeldungen mehr beim builden und runnen bekomme :) und meinermeinung nach ausser ein paar feinheiten der Code auch stimmen müsste.

Und genau wegen dieser Feinheiten komme ich auf euch zu :D, vil. könnt ihr mir weiterhelfen, bzw. vil. habe ich ja auch etwas im IB vergessen?!

hier der Code:

AppDelegate.h

#import <Cocoa/Cocoa.h>

@interface MKenterAppDelegate : NSObject {

IBOutlet NSTextField *categoryTextField;
IBOutlet NSTextField *mediakeyTextField;

}

- (IBAction)clickAddButton: (id)sender;



@end

AppDelegate.m :

#import "MKenterAppDelegate.h"

@implementation MKenterAppDelegate




- (IBAction)clickAddButton: (id)sender; {

NSString *defaultArgument = @"qtdefaults write MediaKeys";
NSString *categoryText = [categoryTextField stringValue];
NSString *mediakeyText = [mediakeyTextField stringValue];

NSArray *argumentsArray = [NSArray arrayWithObjects:defaultArgument, categoryText, mediakeyText, nil];

[NSTask launchedTaskWithLaunchPath:mad:"user/bin/sh" arguments:argumentsArray];

}


@end

Mein Interface hat also zwei Textfelder und einen Button. Klicke ich auf den Button, wird aber nix in die Qt defaults eingetragen :(

Für jede Hilfe bin ich dankbar!

LG
Mortus
 
Hallo,

Frage: Ist die Aktion auch in Interface Builder verbunden?

Ausserdem: Wenn DAS Dein Code ist, kann es nicht gehen: sh ist in /bin/sh, nicht in /usr/bin/sh und schon gar nicht in /user/bin/sh

Und Du schiesst durch die Brust ins Auge: Starte doch einfach /usr/bin/qtdefaults mit den richtigen Argumenten statt sh

Schliesslich hilft es, auch den Result des Tasks zu prüfen.

Alex
 
hi alex,

danke für deine Antwort. Wenn du mit "in Interface Builder verbunden" meinst, dass ich die NSTextField und NSButton mit der App Delegate im IB verbunden habe, dann ja.
Also natürlich möglich, dass ich dort was falsch gemacht habe, aber eigentlich wird einem das ja sehr vereinfacht :D . Ich habe auch in den Properties die Namen vergeben.
Da ich den Pfad der Shell nicht genau kannte, hatte ich jemanden gefragt.
Hmm, das war dann wohl nicht richtig.
Deine Idee ist natürlich gut, denn dann könnte ich noch den "read" befehl mit einbauen, aber ich dachte, ich wills erstmal schaffen das ich überhaupt etwas in die datenbank geschrieben bekomme..
Naja müsste er nicht wenn ich alles richtig gemacht, nur den Pfad nicht, zumindest etwas ausführen, oder würde man davon eh nichts mitbekommen? erst durch den "read"?

Gruß
Nik
 
1. which (1) sagt Dir den Pfad
2. Nein, Du brauchst kein "read". NSTask hat eine Instanzmethode - (int)terminationStatus

Alex
 
1. Danke sehr!

2. Den read meinte ich für "qtdefaults read MediaKeys" um mir die schon eingetragenden Kennwörter anzeigen zu lassen. Aber wie gesagt das war nicht das primäre Ziel. Wenn ichs schaff den Key einzutragen, dann wär das schon was...aber macht schon Spaß :)

naja, ich kann es erst morgen auf Arbeit ausprobieren...
 
Zurück
Oben Unten