2009-08-24 115 views
0

我正在移動我在覈心數據領域的初始步驟(我也是iPhone開發人員的新手),我發現了一個我無法解釋的行爲。 我宣佈一個NSManagedObject的子類,並定義了一些屬性,其中一些類型的NSString *的,MyObject.h是一樣的東西:訪問核心數據實體的NSString屬性

@interface MyObject : NSManagedObject { 

} 

@property (nonatomic, retain) NSString *contentFile; 
@property (nonatomic, retain) NSString *contentPath; 
@property (nonatomic, retain) NSDate *creationDate; 
@property (nonatomic, retain) NSString *name; 

@end 

現在,如果我嘗試創建一個對象實例,並分配一個值在名稱屬性中,當我嘗試打印屬性的內容時,它看起來已經損壞。 在AppDelegate中,在整個核心數據堆棧的定義,我寫:

MyObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject"             
           inManagedObjectContext:self.managedObjectContext]; 

newObject.name = @"Testing"; 
NSLog([NSString stringWithFormat:@"Name: %s\n", newObject.name]); 

我在輸出控制檯中看到什麼是

2009-08-24 20:03:55.176 MyApp[15727:20b] Name: ‡}00» 

如果我做的事情我無法理解錯誤的或者我忘記了什麼。任何人都可以提供幫助嗎?

回答

7

您需要使用%@格式說明在stringWithFormat:,由於NSString是一個Objective-C的對象:

NSLog([NSString stringWithFormat:@"Name: %@\n", newObject.name]); 

%s用於C-字符串(char*多個)。欲瞭解更多信息,請看String Format Specifiers

+0

謝謝,我知道它應該是一件愚蠢的事情... – Eugenio 2009-08-24 18:58:52

1

Objective-C對象的正確格式說明符是%@,而不是%s

+0

感謝您的幫助 – Eugenio 2009-08-24 18:59:45

0

您應該使用%@,而不是%s。 %s用於char *字符串。你正在傳遞一個Objective-C對象。

+0

感謝您的幫助 – Eugenio 2009-08-24 19:00:21

相關問題