2013-10-08 70 views
0

我有一串照片網址,屬於它們的位置(e.x .: googleusercontent.com/photo.gif)。我使用「二進制數據」類型將該單個字符串(字符串可能包含四個其他URL)保存到Core Data中。當我從核心數據中檢索URL時,它會正確顯示字符串的數量,但不會在for循環之外顯示正確的數據。NSMutuableArray&Core Data不正確行爲

// Loop through the photo selection to get the urls 
for (int i=0; i < self.tempPhotos.count; i++) 
{ 
    self.photo = [ self.tempPhotos objectAtIndex:i]; 
    self.image = [ photo originalImage]; 
    NSString *urls = [image.URL absoluteString]; // <-- here we get the urls and store 
    self.selected_urls = urls; 

    NSData * data = [NSKeyedArchiver archivedDataWithRootObject:urls]; 
    self.group.selectedurl = data; // assign it to the core data object 

} 

// Now we're out of the for loop, here is where it will not retrieve and log properly. if i put this inside the for loop, it will. why is that? 
NSMutableArray *temp = [NSMutableArray *)[NSKeyedUnarchiver unarchiveObjectWithData:self.group.selectedurl]; 
NSLog(@"%@",temp); 

如果我把NSLog放在for循環中,我可以正確地得到它。它應該是這個樣子: - 「googleusercontent.com/photo1.gif」 - 「googleusercontent.com/photo2.gif」

當我取回的for循環外的核心數據對象,它給了我這個: - 「googleusercontent.com/photo1.gif」 - 「googleusercontent.com/photo1.gif」

我不知道爲什麼它正在裏面for循環,但以外的任何地方它不會正常工作,我覺得我缺少一個明顯的步驟。我可以得到任何幫助嗎?

+0

你可以把實際的代碼?上面似乎有代碼缺失/不正確。例如,NSData沒有變量。一個地方,你有selected_url,在其他地方它seldctedurl等,這是很容易查明問題,當我們有實際的代碼和所有的聲明。我認爲這是一個聲明問題。 – user2734323

+0

NSData現在有一個變量。 self.selected_urls是頭文件中聲明的字符串,self.group.selectedurl是核心數據對象。那有意義嗎? – jsmos

回答

0

您的urls變量是NSString,您正在歸檔,然後取消歸檔爲NSMutableArray,這是不正確的。我認爲你正在試圖做的是建立的NSStringsNSMutableArrayfor循環什麼:

NSMutableArray *urls = [NSMutableArray arrayWithCapacity:self.tempPhotos.count]; 
for (int i=0; i < self.tempPhotos.count; i++) 
{ 
    ... 

    [urls addObject:[image.URL absoluteString]]; 

    ... 

    NSData * data = [NSKeyedArchiver archivedDataWithRootObject:urls]; 

    ... 
} 
+0

謝謝!得到它的工作。 – jsmos