2013-08-26 14 views
1

這裏陣列是我的接口:的NSMutableArray到的NSString轉換提供的,而不是串

@interface AddRatingViewController() 
    @property (nonatomic, copy) NSMutableArray *categoryFromDb; 
@end 

以下代碼是在viewDidLoad方法:

NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 

NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] initWithEntityName:@"Categories"]; 
[fetchRequest2 setPredicate:pre]; 

self.categoryFromDb = [[managedObjectContext executeFetchRequest:fetchRequest2 error:nil] mutableCopy]; 



if ([self.categoryFromDb count] > 0) { 
    NSString *strUrl1 = [self.categoryFromDb valueForKey:@"rank1Img"]; 

} 

NSLog表明,strUrl1的值是:

(
"assets-library://asset/asset.JPG?id=98E14854-7DA2-4B1F-9B0B-EEDCF3390DF3&ext=JPG" 
) 

但它應該只是:

資產庫://asset/asset.JPG ID = 98E14854-7DA2-4B1F-9B0B-EEDCF3390DF3 & EXT = JPG

看來,該strUrl1越來越代替NSArray字符串值。現在我的問題是,我怎樣才能從字符串 或 刪除這("如何獲得字符串,而不是數組? 或任何其他建議。

回答

1

categoryFromDb的每個元素都屬於類「分類」。你可以嘗試以下幾種: -

NSString *strUrl1 = [((Categories *)[self.categoryFromDb lastObject]) valueForKey:@"rank1Img"]; 

假設你有一個Categories類。

+0

你的代碼確實有效。非常感謝。我沒有「類別」課程。所以,我用:[([self.categoryFromDb lastObject])valueForKey:@「rank1Img」] –

0

取第一對象在這種情況下象下面這樣:

NSString *strUrl1 = [[self.categoryFromDb valueForKey:@"rank1Img"] objectAtIndex:0]; 
0

您可以通過以下做到這一點:

NSString * str = [[array valueForKey:@"rank1img"] componentsJoinedByString:@""]; 
1

executeFetchRequest:error:返回NSArray(你似乎要注意)。 [NSArray valueForKey:]返回由各個元素的結果rank1Img結果組成的NSArray。如果您只需要一個,那麼您需要從categoryFromDbvalueForKey:的結果中選擇一個元素。通常當你相信只有一個元素是你會使用lastObject這個(


編輯:我注意到,有幾個答案使用objectAtIndex:0提取數組的唯一元素建議我建議lastObject如果你是。不正確的,該數組爲空,則lastObject將返回nilobjectAtIndex:0拋出一個異常,並有可能導致程序崩潰。

0

當你調用valueForKey上NSArray,它遍歷所有的項目,並得到值從那個鍵每個成員,它不完全相同,但你可以把它想成map用其他語言。你的數組顯然是一個元素長,所以你可以保留代碼,因爲你可以添加objectAtIndex:0NSString *strUrl1 = [self.categoryFromDb valueForKey:@"rank1Img"];來獲得第一個元素。如果在數組中有多個元素的情況下處理不同,則需要檢查長度,然後進行適當的處​​理。

0

執行時獲取請求以NSArray的形式產生結果。然後使用創建另一個數組的鍵值編碼。 如果你有NSArray的,像這樣的內部Person對象,

NSArray *array = [NSArray arrayWithObjects: person1, person2, person3, nil]; 

說,如果你對模型的人,那麼valueForKey一個peroperty:@「名」會產生一個包含每個名稱的新數組那些模型。

NSArray *names = array[@"name"]; 

所以,如果你希望他們能夠加盟,你會做這樣,

NSString *combinedName = [ array[@"name"] componentsJoinedByString:@""];