2015-06-11 10 views
8

क्या कोई भी तरीका है जिस क्रम में किसी उपयोगकर्ता ने फ़ोटो ऐप में अपने सभी एल्बम व्यवस्थित किए हैं, को संरक्षित करने का कोई तरीका है? मैं इसे पूरे दिन ठीक करने की कोशिश कर रहा हूं, और मुझे लगता है कि मेरे ऐप में प्रदर्शित करने के क्रम को सुरक्षित रखने के लिए मुझे क्या याद आ रही है।Photokit उपयोगकर्ता एल्बम सूची आदेश

मैं आदेश को संरक्षित करना चाहता हूं क्योंकि कोई उपयोगकर्ता फ़ोटो एप में अपने एल्बम को पुनर्व्यवस्थित कर सकता है, इसलिए मैं चाहता हूं कि मेरा यूआई सूची आदेश से मेल खाता हो।

कोड मैं सूची को सेट करने के लिए उपयोग कर रहा हूँ: आप PHAssetCollection वर्ग, जिसके खाते में आदेश लेता है में एक संपत्ति नहीं बना सकता,

PHFetchResult *smartAlbumFetchResult = [PHAssetCollection fetchAssetCollectionsWithType: 
PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil]; 

PHFetchResult *albumFetchResult = [PHAssetCollection fetchAssetCollectionsWithType: 
PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil]; 

NSArray *collectionFetches = @[smartAlbumFetchResult, albumFetchResult]; 

NSMutableArray *albumArray = [NSMutableArray new]; 

for (PHFetchResult *newFetch in collectionFetches) 
{ 
    for (PHAssetCollection *sub in newFetch) 
    { 
     [albumArray addObject:sub]; 
     // Other setup omitted 
    } 
} 

उत्तर

2

क्षमा करें, लेकिन मुझे नहीं लगता कि यह वास्तव में संभव है (मुझे कुछ उन्नयन में उम्मीद है)।
वास्तव में, संपत्ति संग्रह को सॉर्ट करने के लिए PHFetchOptions का उपयोग करना संभव है, लेकिन फोटोकिट भविष्यवाणी और सॉर्ट डिस्क्रिप्टर गुणों के लिए केवल एक प्रतिबंधित सेट का समर्थन करता है (PHFetchOptions देखें) और इनके बीच में मैं सूची आदेश के लिए कोई कुंजी नहीं देख सकता एक उपयोगकर्ता ने फोटो ऐप में व्यवस्थित किया है।

0

? इस तरह आप उन्हें संपत्ति के आधार पर दिखा सकते हैं।

एक बहुत ही सरल उदाहरण, यदि कक्षा में 1 - n से कोई संख्या है, तो उस नंबर के आधार पर आप जानते हैं कि कौन सी कक्षा/फोटो दिखाना है? (या उस संपत्ति के आधार पर उन्हें सॉर्ट करें और आप इसे क्रमशः लूप कर सकते हैं ।)

@Edit सरल उदाहरण:

ज फ़ाइल आप एक संपत्ति की घोषणा में वर्ग PHAssetCollection में।

@property (retain, nonatomic) NSInteger id; 

कक्षा में PHAssetCollection कक्षा में आप उसे प्रारंभिक विधि में भर सकते हैं। यदि आप उसे .m फ़ाइल में उपयोग करना चाहते हैं तो आपको उसे संश्लेषित करना होगा। आप निश्चित रूप से कभी भी और कब चाहें भरने का विकल्प चुन सकते हैं, जो आपकी आवश्यकताओं पर निर्भर करता है। मैं कल्पना कर सकता हूं कि उन्हें एक मानक आईडी मिलती है और जब कोई उपयोगकर्ता एक फोटो खींचता है तो यह उस पर एक नई आईडी सेट करता है।

आप निम्नलिखित के आधार पर अपनी सूची सॉर्ट कर सकते हैं, विधि की तुलना को लागू करने और तुलना कॉल कार्यपद्धति:

//Implement 
- (NSComparisonResult)compare:(PHAssetCollection *)otherPhoto{ 
    return [self.id compare:otherPhoto.id]; 
} 

//Call method 
NSMutableArray *sortedArray; 
sortedArray = [sub sortedArrayUsingSelector:@selector(compare:)]; 

ऐसे कई तरीके हैं इसे पूरा कर रहे हैं। पृष्ठभूमि में ऑर्डर का ट्रैक रखने के लिए एक और अधिक जटिल है और जब भी ऑर्डर बदल जाता है तो आईडी को नहीं बदला जाता है। जब ApplicationWillTerminate या ApplicationDidEnterBackground का आह्वान किया जाता है, तो आप फ़ोटो के क्रम के आधार पर फ़ोटो की आईडी बदलते हैं। इस तरह आपको केवल आईडी को एक बार बदलने की आवश्यकता होगी और इससे आपको कुछ प्रदर्शन बचाएगा।

+0

क्या आपके पास कोड उदाहरण है? – klcjr89

+0

आपका कोड उदाहरण वास्तव में मेरे द्वारा पोस्ट किए गए प्रश्न के लिए समझ में नहीं आता है। यदि आप आईओएस में फोटो ऐप का उपयोग करते हैं और एल्बम ऑर्डर बदलते हैं, तो PHFetchResults आपको सही ऑर्डर नहीं देता है। इसके अलावा आप PHAssetCollection को संशोधित नहीं कर सकते हैं। – klcjr89

+0

बस कुछ दिशानिर्देश दिए और इस विचार को समझाने की कोशिश कर रहे हैं, यह आपके लिए वर्तनी नहीं करेगा .. – Sliver2009

संबंधित मुद्दे