Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 34

0
votes
answers
7 views
+10

如何處理異常

0
NSString *stringURL=[[NSString alloc] init]; 

stringURL=[stringURL stringByAppendingFormat:kSearchBarURL,text.text]; 

NSString *url = [NSString stringWithString:stringURL]; 

NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 

NSString *responseids = [[NSString alloc] initWithData:data1 encoding:nil]; 

responseids = [responseids stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"

	"]]; 

SBJsonParser *parser=[SBJsonParser new]; 

NSData *data = [parser objectWithString:responseids error:nil]; 

NSMutableDictionary *searchURL = (NSMutableDictionary*)data; 

我編寫這個我沒處理我的代碼除外。如何處理異常

做json並調用服務url並加載數據。

當我的服務太低或找不到服務時,應用程序崩潰。

如何辦理在這裏我的代碼異常..

難道我用@try @catch。 或 NSURLConnection用於錯誤處理。

請幫我一把。

在此先感謝。

沙发
0
0

每當API利用NSError的,你應該使用這個,而不是作爲NSError正好爲此設計在try ... catch塊包裹的東西了。我通常會預留@try,因爲我真的無法預測可能會出現什麼問題。如果NSError處於混合狀態,那麼您知道存在潛在的問題,您應該優雅地處理。

更一般地說,你的代碼有一些奇怪的東西。您alloc init一個空的NSString,然後通過追加格式創建一個新的字符串。不知道你爲什麼不使用[NSString stringWithFormat]。獲得字符串後,即可創建URL,而不需要NSString *url位。

您還正在使用一個同步調用,我認爲這是一個遠程服務器。如果/當服務器不可用時,這有可能導致應用程序崩潰。您也不會告訴NSString您希望您的字符串在從NSData中讀取時使用哪種編碼。根據你的服務器端更好的方法是使用NSString的stringWithContentsOfURL:usedEncoding:error:方法。我會建議你使用各種NSURLConnection回調。看看URL Loading System Programming Guide on Using NSURLConnectionNSURLConnection delegate methods是你想實現這個異步處理。

爲了您的修整,你可能有興趣在NSCharacterSet的+whitespaceAndNewlineCharacterSet方法。

最後,對於你的JSON解析,則可能會在爲JSON通過SBJSON解析會喜歡的NSString的是,SBJSON代碼添加到的NSString,特別-JSONValue類別,這將給你的字典或數組表示(如適用) 。

HTH

+0

jxpx777非常感謝您的指導。它真的幫我編寫代碼。 – applelover 2011-06-14 21:50:01

0
votes
answers
7 views
+10

因爲內存增加,iPad在某些時候會崩潰

-3

我正在爲ipad和iphone開發一個項目,這是一個非常老的項目。 我的iPad崩潰在一個主要功能,在這一點上的內存將達到1.6 GB。 但在iphone它正在working.please幫助我解決這個問題。 謝謝soo。因爲內存增加,iPad在某些時候會崩潰

+0

能否請您提供更多詳細信息 –

+0

其實我在昨天之前創建了新的版本,如果我使用iphone運行該版本,它的工作是完美的。 – srinivasreddy

+0

但是,當涉及到iPad,當我運行時,它崩潰了。但我不明白爲什麼。還有一件事是舊版本正常工作,當我將最近的類複製到舊版本,然後老版本alaso崩潰 – srinivasreddy

沙发
0
1

對於我們來說,如果您關心爲我們提供有關您的硬件和您正在處理的特定問題的更多詳細信息,那將會更有幫助。但總的來說,它似乎是一個設計缺陷由於缺乏足夠的內存大部分觀察到Ipad Airs

一般來說,在處理64位環境時,內存佔用量會增加20-30%。隨着更多的應用程序打開,包括一些在後臺進行工作,您可能會看到從內存中相當積極地驅逐應用程序。 儘管iOS版本看起來有所改善,但OS的64位版本似乎仍然比32位版本更頻繁地遇到穩定性問題。這可能只是因爲向64位應用程序(以及相關內存壓力)的轉移給iOS的內存管理例程帶來了更多壓力,這反過來又暴露了一些弱點。

上面的鏈接可能會爲你做的伎倆。祝你好運。

+0

感謝您的回覆。但我的iPad Air擁有22.4 GB可用內存。並且我只在iPhone中運行iPhone Build – srinivasreddy

0
votes
answers
7 views
+10

在ios中切換任務時發生虛假旋轉事件11

2

當您在iPad上使用4指任務切換手勢切換時,我的應用程序在返回時崩潰。在ios中切換任務時發生虛假旋轉事件11

當用戶執行了4指手勢,從我的應用程序中切換出來,我在我的應用程序委託看到applicationWillResignActive:然後applicationDidEnterBackground:,然後(假設我們目前正處在縱向)我頂層視圖控制器獲取viewWillTransitionToSize:withTransitionCoordinator:與表示橫向佈局的大小(即使設備未旋轉)。這當然會導致很多調整和重新安排新方向的觀點。緊接着,我得到viewWillTransitionToSize:withTransitionCoordinator:,其大小指示肖像(設備的原始方向)。再次,我再次爲新的(實際上是原創的)方向進行我的佈局。

我在找的是如果我等待所有這些完成,我可以全天進入和退出我的應用程序。另一方面,如果在這個不必要的工作正在進行時切換回我的應用程序,我會在某些iOS轉換代碼中發生崩潰。

在這一點上,我試圖理解爲什麼我會得到這些流浪的旋轉事件。如果我能避免這些事情發生,我可以避免陷入任何導致事故發生的情況。他們似乎並不必要。

+1

感謝您指出這一點。起初我以爲我無法複製它,然後我意識到,我不僅可以重現它,而且事實上我的應用程序在App Store上充滿了崩潰報告! – matt

+0

我發現了另一種情況發生這種情況,當用戶在應用處於多任務狀態時單擊主頁按鈕時。當應用程序處於後臺狀態時,再次連續兩次「viewWillTransitionToSize」。 – matt

+0

我在想它這樣做的原因是它可以在橫向和縱向上快照應用程序,以便它可以在其正在運行的應用程序列表中顯示縮略圖。使用適當的代碼繞過後臺發生的方向更改,將橫向退出應用程序,旋轉至縱向,然後雙擊主屏幕以顯示正在運行的應用程序。你的屏幕截圖是錯誤的。我認爲要真正解決這個問題,我需要弄清楚我的旋轉/佈局代碼中觸發iOS中與重疊動畫相關的錯誤。與此同時,我推遲了佈局,直到我的應用程序變爲活動狀態。 – Craig

沙发
0
0

事實證明,沒有辦法阻止嚮應用程序報告輪換事件。我懷疑這是一個iOS錯誤。但是,在應用程序狀態爲UIApplicationStateBackground時忽略viewWillTransitionToSize:withTransitionCoordinator:,並在視圖的layoutSubviews(如果存在)中執行相同操作可以解決此問題。

板凳
0
1

我想不出有任何理由爲什麼它會是有用的或正確獲得viewWillTransitionToSize在後臺,所以只是反彈,如果你背景是

if UIApplication.shared.applicationState == .background { 
    return 
} 

不過,這種感覺就像一個錯誤,在我看來你應該向Apple報告。

+0

換句話說:如果你實現'layoutSubviews',它是否被調用與你是否實現'viewWillTransitionToSize'無關。但是,這不是你所要求的。 – matt

+0

我們是否應該刪除我們的評論?它會更乾淨。 – matt

+0

就像我建議的那樣,刪除所有評論。你的回答站立。評論是短暫的;我們用它們來討論如何進行。現在辯論結束了。 – matt

0
votes
answers
7 views
+10

發送按鈕上的值點擊從UIView到它的超級視圖的超級視圖(UIViewController)-iOS

0

我有一個叫做HomeViewController的ViewController。它的子視圖是(UIView)。 ActivityView的子視圖是ActivityCard(UIView)。在ActivityCard中,我有一個名爲Enter的按鈕。在它的點擊我需要將所有文本域的值從ActivityCard xib發送到HomeViewController並從那裏調用一個API。我以前從未與xib合作過,因此無法管理這種情況。任何幫助將不勝感激!發送按鈕上的值點擊從UIView到它的超級視圖的超級視圖(UIViewController)-iOS

編輯:

ActivityCard.h

@interface ActivityCard : UIView 


- (IBAction)actionEnterClick:(id)sender; 
@property (weak, nonatomic) IBOutlet UILabel *lblActivityCount; 
@property (weak, nonatomic) IBOutlet UIButton *enterButton; 

@end 

ActivityView.h

@interface ActivityView : UIView 

@property (strong) ActivityCard *card; 
@property (weak, nonatomic) IBOutlet iCarousel *carousel; 

@end 

ActivityView.m

- (UIView *)carousel:(__unused iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view 
{ 
if (view == nil) 
    { 
     _card = (ActivityCard*) [[[NSBundle mainBundle] loadNibNamed:@"ActivityCard" owner:nil options:nil] objectAtIndex:0]; 

     _card.frame = CGRectMake(0, 0, 280.0, 350.0); 
     _card.layer.cornerRadius = 10.0f; 
     view = _card; 
    } 
    return view; 
} 

HomeViewController.h

@interface HomeViewController : UIViewController 

@property (strong) ActivityView *viewActivity; 

@end 

HomeViewController.m

_viewActivity = (ActivityView*) [[[NSBundle mainBundle] loadNibNamed:@"ActivityView" owner:nil options:nil] objectAtIndex:0]; 
    _viewActivity.frame = CGRectMake(0.0f, 0.0f, _viewContainer.frame.size.width, _viewContainer.frame.size.height); 
    [_viewActivity updateActivityUI]; 

    for (UIView *child in _viewContainer.subviews) { 
     [child removeFromSuperview]; 
    } 
    [_viewContainer addSubview:_viewActivity]; 

    [_viewActivity.card.enterButton addTarget:self action:@selector(enterButtonDidTouch) forControlEvents:UIControlEventTouchUpInside]; 

    [_viewActivity.card.lblActivityCount setText:@"11"]; 

,當我們需要加載一個按鈕點擊ActivityView此代碼已被寫入。

沙发
0
1

有很多方法可以做到這一點,我會告訴你一種方式,我認爲這是最簡單的方法。

  • ActivityCard.h
  • HomeViewController添加動作爲您Enter Button使用下面我的代碼創建Enter Button您所有的文本框的propertyproperty

    [self.activityView.cardView enterButton addTarget:self action:@selector(enterButtonDidTouch) forControlEvents:UIControlEventTouchUpInside]; 
    
  • HomeViewController.menterButtonDidTouch

    - (void)enterButtonDidTouch { 
        NSString *textOfTextField1 = self.activityView.activityCard.textField1.text; 
        // With the same way you can get others text of text fields and use them 
    } 
    
+0

的方法在某種程度上是沒有得到所謂的創建方法。任何我可能會缺少的東西? – Dia

+0

當我嘗試將標籤文本從HomeViewController設置爲ActivityCard時,它沒有正確設置值。我試過了:[_viewActivity.card.lblActivityCount setText:@「11」]; – Dia

+0

正如我所見,你做對了。你能告訴我你是如何實施它們的嗎? @Dia – trungduc

0
votes
answers
6 views
+10

如何用Objective C殺死一個線程?

2

我有一個第三方C++庫,我已經把它放入它自己的線程(目前使用NSThread)調用。我想給用戶停止執行該線程的能力。 (我很清楚這可能導致的所有問題,但我仍然希望這樣做。)如何用Objective C殺死一個線程?

根據Apple's Thread Programming Guide,Cocoa有可能這樣做。這也適用於iPhone嗎?還是我必須依靠Posix線程來完成我的目標?

乾杯

MrMage

+4

如果你認爲你想停止一個線程直接和外部沒有某種同步原語來停止它在一個已知點然後,不,你不明白它可能造成的問題。其中一個問題很可能是崩潰或損壞的內存。不可避免的如此。 – bbum 2009-08-29 18:35:46

+0

即使當我想殺死的線程(工作線程)不使用任何主線程的對象,反之亦然? 圖書館的開發者告訴我,他很高興地使用這種線程取消來阻止他的工作線程,並且他沒有遇到這樣的主要問題。 – MrMage 2009-08-29 21:46:37

+0

如果他的庫以任何方式使用任何系統庫調用,則強制殺死線程將導致未定義的行爲。這包括malloc(),甚至。即使它現在看起來有效,它是否繼續在軟件更新和體系結構更改上工作也是一個完全不同的問題。 – bbum 2009-08-30 06:35:16

沙发
0
10

正確的方式來阻止你的線程執行是要求它很好地停止執行。然後,在你的線索中,你會聽取這樣的要求,並在適當的時候服從他們。

由於很頁面鏈接到您說:

雖然可可,POSIX,和多服務提供程序直接殺線程,使用這種程序的強烈反對。殺死一個線程可以防止線程自行清理。由該線程分配的內存可能會泄漏,並且線程當前正在使用的任何其他資源可能無法正確清理,從而在稍後創建潛在問題。

如果您預計需要在操作過程中終止線程,則應該從一開始就設計線程以響應取消或退出消息。對於長時間運行的操作,這可能意味着要定期停止工作並檢查是否收到了這樣的消息。如果消息確實要求線程退出,線程將有機會執行任何需要的清理並正常退出;否則,它可能會重新開始工作並處理下一塊數據。

0
votes
answers
6 views
+10

在controlTextDidChange方法中使用自定義NSFormatter訪問NSTextField的`stringValue`使其不可編輯。

0

我對here & here中描述的文本字段具有自定義NSFormatter。我也有這個textfield的代表,並且我正從代表方法controlTextDidChange:訪問stringValue。有了這段代碼,當我嘗試編輯文本字段時,它不斷地從NSFormatter重置它的值,並使其不可編輯。在controlTextDidChange方法中使用自定義NSFormatter訪問NSTextField的`stringValue`使其不可編輯。

CustomFormatter.m

@implementation CustomFormatter 

- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(NSString **)error { 
    float floatResult; 
    NSScanner *scanner; 
    BOOL returnValue = NO; 

    scanner = [NSScanner scannerWithString: string]; 
    [scanner scanString: @"$" intoString: NULL]; // ignore return value 
    if ([scanner scanFloat:&floatResult] && ([scanner isAtEnd])) { 
     returnValue = YES; 
     if (obj) { 
      *obj = [NSNumber numberWithFloat:floatResult]; 
     } 
    } else { 
     if (error) { 
      *error = NSLocalizedString(@"Couldn’t convert to float", @"Error converting"); 
     } 
    } 
    return returnValue; 
} 

- (NSString *)stringForObjectValue:(id)anObject { 

    if (![anObject isKindOfClass:[NSNumber class]]) { 
     return nil; 
    } 
    return [NSString stringWithFormat:@"$%.2f", [anObject floatValue]]; 
} 

@end 

MyDelegate.m

@interface MyController() <NSTextFieldDelegate> 
@property (weak) IBOutlet NSTextField *text1;  
@end 

@implementation MyController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do view setup here. 
} 

- (void)controlTextDidChange:(NSNotification *)obj { 
    NSLog(@"%@",[self.text1 stringValue]); 
} 
@end 
+0

你甚至沒有正確使用controlTextDidChange。 –

+0

你想用部分字符串做什麼?你想在用戶輸入「900」時處理「9」嗎? – Willeke

+0

@Willeke讓我們說我試圖過濾一個數據集作爲用戶輸入,例如當用戶鍵入'9'我想顯示一個以'9'開頭的結果集例如:900。 @El番茄你是什麼意思,我沒有正確使用'controlTextDidChange'?請詳細說明。 – cha77a

沙发
0
0

你可以從field editor字符串,一個NSTextView。您可以從通知的用戶信息中獲取字段編輯器。

controlTextDidChange

被調用此方法時文本在控制如文本字段或形式的變化。控件發佈了一個textDidChangeNotification通知,並且如果控件的委託實現此方法,它將自動註冊以接收通知。使用鍵「NSFieldEditor」從通知對象的userInfo字典中獲取字段編輯器。

0
votes
answers
6 views
+10

在鑰匙串中存儲遊戲狀態和分數

1

我想在鑰匙串中存儲我的遊戲的一些字符串(分數,lastPlayedLevel等)。因爲它被認爲是最安全的方法。 因爲我是鑰匙扣概念的新手,所以在理解「非常簡單」的事情時遇到了問題。在鑰匙串中存儲遊戲狀態和分數

我用SAMKeychain包裝,我想設置lastPlayedLevel字符串如下

[SAMKeychain setPassword:@"25" forService:[[NSBundle mainBundle] bundleIdentifier] account:@"lastPlayedLevel"]; 

它是一個正確的做法?我不確定「帳戶」部分。我希望在用戶的所有設備上同步「lastPlayedLevel」。我必須寫一個用戶特定的字符串嗎?

+2

*遊戲成績和狀態*並非真正有資格存儲在鑰匙串中。 iOS默認情況下非常安全。將這種信息保存到'UserDefaults',一個自定義屬性列表文件或核心數據。 – vadian

+0

我沒有明白爲什麼他們不符合鑰匙鏈的要求。有很多帖子說UserDefaults不安全放置敏感信息。例如,在我的遊戲「分數」中確定遊戲的很多方面,所以我不希望任何人訪問和修改它。我對定製的plist文件和核心數據瞭解不多,它們是否安全?此外,通過鑰匙串,可以跨多個平臺同步這些信息。 – iloalo

沙发
0
1

把比分和比賽狀態的鑰匙串是矯枉過正恕我直言。你需要做的只是將它們存儲在NSUserDefaults中,但在存儲它之前將數據編碼爲二進制文件,這樣任何打開你的NSUSerDefaults文件的人都不會立即查看/編輯它。如果你想要更多的保密性,那麼在編碼爲二進制之前先將值編碼(例如char xor或其他)。

0
votes
answers
5 views
+10

需要後臺進程。線?

1

我需要一個後臺進程來運行每分鐘左右。我不希望這個過程干擾其他應用程序的響應。這將成爲一個線程的好候選人嗎?如果是這樣,你會如何建議我設置線程 - 特別是,哪些類/方法可以很好地研究?需要後臺進程。線?

沙发
0
2

這取決於背景過程的緊密程度。製作一個在後臺運行的單獨程序可能是一個更好的主意。

要開始使用,請查看Apple的guide to threads。多線程編程並不適合心臟病發作,因此您需要確保理解其背後的想法和注意事項,並可能首先嚐試其他解決方案。如果這個「後臺進程」不是很重,那麼在主線程中使用定時器幾乎肯定會消失。如果它與你的應用程序內部沒有緊密聯繫,那麼「工作者」程序可能是個好主意。

板凳
0
5

這聽起來像是一個相當不錯的人選NSOperationNSOperationQueue - 將您的工作單元打包爲一個操作並在必要時將其關閉。對於做「每分鐘左右」一點,NSTimer是不奇怪的選擇。

地板
0
0

這確實取決於後臺進程在做什麼,它需要訪問哪些資源等等。如果你只是想調用someMethod:每一分鐘,然後使用NSTimer。如果你確實需要類似NSOperationQueue的東西,我會建議尋找這個替代方案來解決當前實現中的一些錯誤。

http://www.mikeash.com/?page=pyblog/raoperationqueue-an-open-source-replacement-for-nsoperationqueue.html

+0

蘋果已經固定,現在的bug,我們可以自由使用NSOperationQueue一次 - http://www.mikeash.com/pyblog/use-nsoperationqueue.html – 2010-02-12 22:18:55

0
votes
answers
5 views
+10

NSCalendar ordinalityOfUnit不會正確返回星期幾

0

我必須確定Objective C類中的星期幾。 嘗試使用這種方法:NSCalendar ordinalityOfUnit不會正確返回星期幾

- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller 
         inUnit:(NSCalendarUnit)larger 
         forDate:(NSDate *)date; 

這是我的代碼:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
(int) [gregorian ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekday forDate:[NSDate date]]; 

它總是返回-1,不管今天是什麼日子。即使我改變了日期,或者整個星期都在循環。 但是,使用這種方法,它工作得很好:

- (NSDateComponents *)components:(NSCalendarUnit)unitFlags 
         fromDate:(NSDate *)date; 

到目前爲止好。唯一的問題是:此方法已被棄用(在iOS 8.0中首次棄用,因此很久以前)。 有點害怕使用舊的棄用方法進行生產。有沒有辦法使(甚至不是)新方法的工作?

+2

https://開頭開發商.apple.com/documentation/foundation/nscalendar/1414841-components?language = objc我不認爲它已被棄用。 iOS8可能會棄用的是「NSWeekdayCalendarUnit」與「NSCalendarUnitWeekday」。 – Larme

+1

另外,請檢查'ordinalityOfUnit:inUnit:forDate:'的文檔。它說在某些情況下返回'NSNotFound'(比如'smaller'> ='larger'',因爲在你的情況下它們是相等的),'NSNotFound'可以從'NSUInteger'轉換爲'-1' int' – Larme

+0

Larme:你說得對。謝謝!這是一個簡單的解決方案... – gs80

沙发
0
1

ordinalityOfUnit:inUnit:forDate:文檔:

返回,對於給定的絕對時間,較小的日曆單位的序數(如一天)指定的較大的日曆單元內(如一週)。

您已指定相同單元針對前兩個參數,你需要爲第一和周第二指定一天:

[gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:[NSDate date]] 

HTH

0
votes
answers
5 views
+10

如何比較/排序日期與目標C日期排列

1

請幫我...如何比較/排序日期與目標C日期排列

我存儲當前系統日期中的變量myDatemyDate = 11 Nov 2017

現在我想最後一個/上n日期從myDate

例如: -n = 7

myDate - 7 => 05 Nov 17

現在,這裏我得到日期1(currentDate) = 11 November 17 & & date2的(previous n date) = 05 November 17

我從我的核心數據,這給我取的數據這組日期:

(
    "11 November 2017", 
    "10 November 2017", 
    "8 November 2017", 
    "5 November 2017", 
    "3 November 2017", 
    "1 November 2017" 
) 

現在我要存/取日期date1date2

在兩者之間

所以最後我應該得到這個數組:

(
     "11 November 2017", 
     "10 November 2017", 
     "8 November 2017", 
     "5 November 2017" 
) 

我怎麼能做到這一點,請幫助我。

+0

請幫我... – Aadi

+0

是日期'NSString'或'NSDate'實例? – vadian

+0

日期在NSString – Aadi

沙发
0
1

@Aadi試試這個..

NSMutableArray *arrOutput = [[NSMutableArray alloc]init]; 
    NSMutableArray *arrDates = [[NSMutableArray alloc]initWithObjects:@"11 November 2017", 
           @"10 November 2017", 
           @"8 November 2017", 
           @"5 November 2017", 
           @"3 November 2017", 
           @"1 November 2017", nil]; 
    NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
    [df setDateFormat:@"dd MMMM yyyy"]; 
    [df setTimeZone:[NSTimeZone localTimeZone]]; 
    NSString *strCurrentDate = [df stringFromDate:[NSDate date]]; 
    NSDate *currentDate = [df dateFromString:strCurrentDate]; 

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

    NSDateComponents *dayComponent = [[NSDateComponents alloc] init]; 
    dayComponent.day = -7; 
    NSDate *lastWeek = [gregorian dateByAddingComponents:dayComponent toDate:[NSDate date] options:0]; 

    for(int i=0; i<arrDates.count; i++) 
    { 
     NSDate *dateFormArray = [df dateFromString:[arrDates objectAtIndex:i]]; 
     if ([dateFormArray compare:currentDate] == NSOrderedAscending && [dateFormArray compare:lastWeek] != NSOrderedAscending) 
     { 
      [arrOutput addObject:[arrDates objectAtIndex:i]]; 
     } 
    } 
    NSLog(@"current date = %@",strCurrentDate); 
    NSLog(@"output = %@",arrOutput); 
+0

謝謝@Nirav,您的答案不按我的要求工作。它將每個日期打印爲前一天的日期。假設currentDate是17年11月11日,那麼它會打印currentDate = 11 Nov 17.同樣的情況與dateFromArray。 dateFrom數組應該只有currentDate && lastWeek之間的日期。但它從myDate數組中打印所有日期。 – Aadi

+0

@Aadi假設當前日期是11月17日,那麼根據你的數組輸出將是11月5日,8日和10日..對吧? –

+0

你剛接近它,請嘗試一下。 – Aadi