2011-11-23 11 views
7

Chcę danych wejściowych od użytkownika ich nazwę i dane wyjściowe, które wprowadzają nazwę w NSLog przy użyciu NSString. Nie wiem, który znak% i jak to wypisać. Czy mogę użyć funkcji scanf() do tego? Pomóż mi, jestem dopiero początkującym w Objective-C.Jak wypisać typ NSString w funkcji NSLog w Objective-C?

+0

See [String Specyfikatory format] (http://developer.apple.com/library/IOs/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html) w dokumentacji. – Anna

Odpowiedz

23

Możesz użyć% @ dla wszystkich obiektów, w tym NSString. To z kolei wywoła metodę obiektów i wydrukuje odpowiedni ciąg znaków. Większość obiektów ma już dość przydatną reprezentację (np. Obiekty NSArray zwracają opisy całej ich zawartości).

+0

JAK TO? NSLog ("% @", nazwa); ? –

+5

Tak, 'NSLog ("% @ ", nazwa); 'działa. – progrmr

1

%@ jest to, co chcesz. To pasuje do obiektu jak NSString, [YourViewController class]

1

NSLog akceptuje ciąg formatu, więc można zrobić coś takiego:

#include <stdio.h> 
#include <Foundation/Foundation.h> 

// 1024 characters should be enough for a name. 
// If you want something more flexible, you can use GNU readline: 
// <http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html> 
#define MAX_NAME_LENGTH 1024 

// Get name from user input 
char name[MAX_NAME_LENGTH]; 
name[0] = '\0'; // just in case fgets fails 
fgets(name, MAX_NAME_LENGTH, stdin); 

// Put name into NSString object and output it. 
NSString *name = [NSString stringWithUTF8String:name]; 
NSLog(@"%@", name); 

%@ działa dla wszystkich obiektów Objective-C. Jeśli chcesz wypisać ciąg C (char* lub const char*), użyj %s. Nigdy nie przykładaj niepustowego ciągu jako pierwszego argumentu do NSLog, ponieważ to otwiera luki w zabezpieczeniach.

+0

hehe! Po prostu chcę NSString z User Input. Not Char i wyjście, które NSString.i także nie chcą konwertować na NSString.Can ja to lubię. Jestem tylko początkującym. Proszę mi wyjaśnić. :) –

+0

Nie można uzyskać NSString bezpośrednio ze standardowego wejścia (zakładając, że tego chcesz). Możesz to zrobić za pomocą 'NSFileHandle' i' NSData' jeśli chcesz, ale bezpośrednio używając 'NSString' nie jest możliwe. Zobacz przykład: http://caiustheory.com/read-standard-input-using-objective-c. –

+0

ah! wiem . więc nie możemy uzyskać bezpośredniego wejścia String. W C# .Net możemy łatwo użyć Console.ReadLine(); . Ale w OBJC. nie możemy dostać. :(Dzięki za twoje odpowiedzi –

0

Aby uzyskać dane wejściowe od użytkownika, należy użyć UITextField lub NSTextField. Do wyjścia ciąg do pliku dziennika można użyć NSLog, tj:

NSString* userName = @"Zawmin"; 

NSLog(@"name = %@", userName); 
+0

Lub NSTextField jeśli używasz kakao –

+0

Teraz używam wejście konsoli od użytkowników.Jak mogę to zrobić? –

+0

@Zawmin zobacz moją odpowiedź.Za pomocą fgets uzyskać ciąg C od użytkownika Następnie konwertuje go na NSString na wyjście przy użyciu NSLog. –

3

Mark Dylan to nazwa, która będzie przechowywana w zmiennej Nazwa.

NSString* Name = @"Mark Dylan"; 

Kod ten pozwala zapytać o jego nazwisko i zeskanować go do pamięci, która będzie przechowywana w zmiennej Nazwa.

NSLog("What is your name?"); 
scanf("%@", &Name); 

Jeśli chcesz wydrukować zmienną, której możesz użyć;

NSLog("Your name is %@", Name); 
Powiązane problemy