2014-03-19 95 views
1

我有一個包含自定義類的對象的數組。然而,在初始化編譯器給我一個錯誤 - "Lexical or Preprocessor" Expected ':'爲什麼我不能用對象初始化這個NSArray?

interface myClass : NSObject 
@property (readwrite, strong) NSString* name; 
@property (readwrite, strong) NSString* home; 
@property (readwrite, strong) Preference pref; // This is another custom class 
-(id) initWithName:(NSString*) name home:(NSString*) home preference:(Preference) preference; 
end 

@interface MyViewController() 
@property (nonatomic, strong) NSArray *rowArray; 
@end 

@implementation MyViewController 
... 
... 
... 

- (void) initializeArray 
{ 
    self.rowArray = @{ 
         [[myClass alloc] initWithName:@"Harry" home:@"New York" preference :Acura], 
         [[myClass alloc] initWithName:@"Win" home:@"Seattle" preference :Toyota]; 
        }; 
} 

誰能告訴我只是在那裏我搞亂了,爲什麼我得到這個錯誤?

+0

接口前應該有@符號。或者是複製和粘貼錯誤? –

+0

Yup .............. –

+1

紐約和西雅圖不是NSStrings。 – matt

回答

8

Objective-C literal用於陣列是用方括號,

NSArray *anArray = @[obj1, obj2]

在您發佈它試圖做一個解釋的代碼,

NSDictionary *aDict = @{"key1" : obj1, @"key2" : obj2}

所以這就是爲什麼說,預計一:

該行應該讀,

self.rowArray = @[ 
    [[myClass alloc] initWithName:@"Harry" home:"New York" preference :Acura], 
    [[myClass alloc] initWithName:@"Win" home:"Seattle" preference :Toyota]; 
]; 

正如其他人指出,也有一些其他錯誤的代碼和這些城市的名字沒有的NSString的,但我想這只是一個例子片斷。

+1

就是這樣。該死的我需要更大的眼鏡。謝謝! –

+1

幹得好+1 ... –

相關問題