1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      YourfirstiOSapp(9)——WorkingwithFoundation

      Working with Foundation

      專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)云龍免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過(guò)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

      使用Foundation框架

      當(dāng)你開(kāi)始為你的app編寫(xiě)代碼的時(shí)候,你將發(fā)現(xiàn)有很多的Objective-C框架你能夠利用。特別重要的是Foundation framework,它為所有的app提供了基礎(chǔ)的服務(wù)。Foundation框架包含了代表基本數(shù)據(jù)類(lèi)型的值類(lèi)(value classes)例如字符串和數(shù)字,以及存儲(chǔ)其他對(duì)象的集合類(lèi)(collection class)。你將依賴(lài)值類(lèi)和集合類(lèi)來(lái)為你的ToDoList app編寫(xiě)很多代碼。

      Value Objects

      值對(duì)象

      Foundation框架提供一般值對(duì)象的類(lèi),包括字符串、二進(jìn)制數(shù)據(jù)、日期和時(shí)間、數(shù)字和其他數(shù)值。

      之對(duì)象是一個(gè)封裝了原始值(C數(shù)據(jù)類(lèi)型)的對(duì)象,且給值提供了相應(yīng)的服務(wù)。你經(jīng)常遇到的值對(duì)象是app 中調(diào)用的方法或者函數(shù)中作為返回值和參數(shù)存在的。框架中的不同部分——甚至不同框架——能通過(guò)傳遞值對(duì)象來(lái)改變數(shù)據(jù)。

      一些在Foundation框架中的值對(duì)象例子:

      NSString andNSMutableString

      NSData andNSMutableData

      NSDate

      NSNumber

      NSValue

      因?yàn)橹祵?duì)象代表標(biāo)量值,你能在集合中以及任何需要的地方使用他們。值對(duì)象有遠(yuǎn)勝于他們封裝原始類(lèi)型:他們讓你簡(jiǎn)單高效的執(zhí)行某些封裝的操作。舉個(gè)例子,NSString類(lèi),有搜索和替換子字符串的方法,把字符串寫(xiě)到文件或者URLs中,以及構(gòu)建文件的系統(tǒng)路徑。

      你從元類(lèi)型數(shù)據(jù)(然后或許在方法參數(shù)中傳遞它)中創(chuàng)建值對(duì)象。在你的代碼中,你稍后訪問(wèn)從對(duì)象的封裝數(shù)據(jù)。NSNumber類(lèi)提供這種方法最清晰的例子

      .intn=5;// Value assigned to primitive type

      .

      .NSNumber*numberObject=[NSNumbernumberWithInt:n];// Value object created from primitive type

      .

      .inty=[numberObjectintValue];// Encapsulated value obtained from value object (y == n)

      .

      絕大多數(shù)值類(lèi)都可以通過(guò)聲明初始化和類(lèi)工廠方法來(lái)創(chuàng)建他們的實(shí)例。類(lèi)工廠方法——為客戶(hù)方便的實(shí)現(xiàn)類(lèi)的實(shí)例化——聯(lián)合了分配和初始化在一個(gè)步驟里并且返回創(chuàng)建的對(duì)象。舉個(gè)例子,NSString類(lèi)聲明一個(gè)string類(lèi)方法它分配并初始化了一個(gè)新的累的實(shí)例并且返回這個(gè)實(shí)例到你的代碼。

      .NSString*string=[NSStringstring];

      .

      除了創(chuàng)建之對(duì)象和讓你訪問(wèn)他們封裝的值之外,大多數(shù)的值類(lèi)為簡(jiǎn)單的操作提供方法,例如對(duì)象比較。

      Strings

      字符串

      Objective-C支持的字符串的約定和C一樣:?jiǎn)我坏淖址脝我?hào)括起來(lái),字符串用雙引號(hào)括起來(lái)。但是Objective-C框架通常不使用C字符串。他們使用NSString對(duì)象。

      NSString類(lèi)給字符串提供的對(duì)象封裝方法,具有為存儲(chǔ)任意長(zhǎng)度的字符串提供內(nèi)存管理、支持不同字符編碼(特別是Unicode)、以及字符串格式化。因?yàn)槟憬?jīng)常使用字符串,Objective-C提供一個(gè)簡(jiǎn)化符號(hào)來(lái)從不變值中創(chuàng)建NSString對(duì)象。。想要使用這個(gè)NSString文字,只要在雙引號(hào)前加上“@”。如下面的例子所示:

      .// Create the string "My String" plus carriage return.

      .

      .NSString*myString=@"My String\n";

      .

      .// Create the formatted string "1 String".

      .

      .NSString*anotherString=[NSStringstringWithFormat:@"%d %@",1,@"String"];

      .

      .// Create an Objective-C string from a C string.

      .

      .NSString*fromCString=[NSStringstringWithCString:"A C string"encoding:NSUTF8StringEncoding];

      .

      Numbers

      Objective-C提供一個(gè)簡(jiǎn)化的符號(hào)用來(lái)創(chuàng)建NSNumber對(duì)象,代替需要調(diào)用初始化或類(lèi)工廠方法來(lái)創(chuàng)建對(duì)象。只是在數(shù)值前加上符號(hào)@,并且跟著一個(gè)任意值,來(lái)創(chuàng)建NSNumber對(duì)象封裝整型值和浮點(diǎn)值,如下代碼所示:

      .NSNumber*myIntValue= @32;

      .

      .NSNumber*myDoubleValue= @3.22346432;

      .

      你甚至可以封裝布爾值和字符值

      .NSNumber*myBoolValue= @YES;

      .

      .NSNumber*myCharValue=@'V';

      .

      你可以創(chuàng)建一個(gè)NSNumber對(duì)象來(lái)代表無(wú)符號(hào)整型、長(zhǎng)整型、常常整型、以及浮點(diǎn)值通過(guò)在后面分別添加字幕U、L、LL、和F。例如,要?jiǎng)?chuàng)建一個(gè)NSNumber對(duì)象封裝的浮點(diǎn)值,如下所示:

      .NSNumber*myFloatValue= @3.2F

      .

      Collection Objects

      集合對(duì)象

      大多數(shù)Objective-C代碼中的集合對(duì)象是一個(gè)基本集合類(lèi)——NSArray,NSSet, 和NSDictionary.的實(shí)例。這些類(lèi)被用在管理對(duì)象組,所以任何你想要添加到集合中的項(xiàng)目必須是一個(gè)Objective-C類(lèi)的實(shí)例。如果你想添加一個(gè)標(biāo)量值,你必須先創(chuàng)建一個(gè)合適的NSNumber或NSValue實(shí)例來(lái)表示它。

      任何你添加到集合中的對(duì)象將在集合的生存期內(nèi)生存。這是因?yàn)榧项?lèi)使用強(qiáng)引用來(lái)跟蹤它們的內(nèi)容。除了跟蹤它們的內(nèi)容,每個(gè)集合類(lèi)都很容易執(zhí)行某些任務(wù),例如枚舉、訪問(wèn)特定對(duì)象、或者查找特定的對(duì)象是否是集合的一部分。

      NSArray,NSSet, 和NSDictionary 這些類(lèi)的內(nèi)容在創(chuàng)建的的時(shí)候被設(shè)置。因?yàn)樗鼈儾荒茈S意被改變,它們被稱(chēng)為不可變。它們每一個(gè)也擁有一個(gè)子類(lèi),叫做可變,允許你隨時(shí)添加或移除對(duì)象。不同類(lèi)型的結(jié)合組織對(duì)象的方式如下:

      NSArray 和NSMutableArray— 數(shù)組是對(duì)象的有序集合。你能通過(guò)數(shù)組中指定的位置(就是索引)來(lái)訪問(wèn)對(duì)象。數(shù)組中的第一個(gè)元素索引是0(zero)。

      NSSet 和NSMutableSet—集合儲(chǔ)存一組無(wú)序的對(duì)象,每個(gè)對(duì)象只能出現(xiàn)一次。你通常通過(guò)應(yīng)用測(cè)試或者過(guò)濾集合中的對(duì)象來(lái)訪問(wèn)集合中的對(duì)象。

      NSDictionary 和NSMutableDictionary—字典將其條目以鍵-值對(duì)的方式存儲(chǔ);鍵是唯一的標(biāo)識(shí)符,通常是一個(gè)字符串,而值是一個(gè)你想存儲(chǔ)的對(duì)象。你通過(guò)鍵來(lái)訪問(wèn)對(duì)象。

      Arrays

      數(shù)組

      數(shù)組(NSArray)是用來(lái)表示對(duì)象的有序表。唯一的要求是每一個(gè)項(xiàng)目必須是Objective-C的對(duì)象——沒(méi)有要求每個(gè)對(duì)象是同一類(lèi)的實(shí)例。

      為了維持?jǐn)?shù)組的有序性,每個(gè)元素都被儲(chǔ)存在從零開(kāi)始的索引中。

      Creating Arrays

      創(chuàng)建數(shù)組

      在本章前面的關(guān)于值類(lèi)描述中,你能通過(guò)分配和初始化、類(lèi)工廠方法、或數(shù)組字面值來(lái)創(chuàng)建一個(gè)數(shù)組。

      根據(jù)對(duì)象的數(shù)目,有多種不同的有效的初始化和工廠方法。

      .+(id)arrayWithObject:(id)anObject;

      .

      .+(id)arrayWithObjects:(id)firstObject,...;

      .

      .-(id)initWithObjects:(id)firstObject,...;

      .

      因?yàn)閍rrayWithObjects和initWithObjects方法都以nil作為結(jié)束,可變參數(shù),你必須以nil作為最后一個(gè)值。

      .NSArray*someArray=

      .

      .[NSArrayarrayWithObjects:someObject,someString,someNumber,someValue,nil];

      .

      這個(gè)示例創(chuàng)建了一個(gè)像之前看到過(guò)的數(shù)組。第一個(gè)對(duì)象,someObject,將有一個(gè)數(shù)組索引0;最后一個(gè)對(duì)象,someValue,將有一個(gè)索引3。

      它可能被無(wú)意的截?cái)嗔斜恚绻渲幸粋€(gè)值提供的是nil。

      .idfirstObject=@"someString";

      .

      .idsecondObject=nil;

      .

      .idthirdObject=@"anotherString";

      .

      .NSArray*someArray=

      .

      .[NSArrayarrayWithObjects:firstObject,secondObject,thirdObject,nil];

      .

      在這個(gè)例子中,someArray僅包含firstObject,因?yàn)閟econdObject的值是nil,它中斷了列表的項(xiàng)目。

      It’s possible to create an array literal using a compact syntax.

      .NSArray*someArray= @[firstObject,secondObject,thirdObject];

      .

      當(dāng)使用這個(gè)語(yǔ)法,nil不會(huì)終止列表,nil是一個(gè)無(wú)效的值。舉個(gè)例子,如果你嘗試執(zhí)行下面的代碼,在運(yùn)行時(shí)你會(huì)得到異常。

      .idfirstObject=@"someString";

      .

      .idsecondObject=nil;

      .

      .NSArray*someArray= @[firstObject,secondObject];

      .

      .// exception: "attempt to insert nil object"

      .

      Querying Array Objects

      查詢(xún)數(shù)組對(duì)象

      在你創(chuàng)建了一個(gè)數(shù)組后,你能查詢(xún)它來(lái)獲取信息——例如它有多少對(duì)象或者它是否包含給定的項(xiàng)目。

      .NSUIntegernumberOfItems=[someArraycount];

      .

      .

      .

      .if([someArraycontainsObject:someString]){

      .

      ....

      .

      .}

      .

      You can also query the array for an item at a given index. If you attempt to request an invalid index, you’ll get an out-of-bounds exception at runtime. To avoid getting an exception, always check the number of items first.你也可以根據(jù)給定索引來(lái)查詢(xún)數(shù)組中的項(xiàng)目。如果你嘗試請(qǐng)求一個(gè)無(wú)效索引,在運(yùn)行時(shí)你將得到一個(gè) out-of-bounds的異常。為了避免異常,總是事先檢查項(xiàng)目的數(shù)量。

      .if([someArraycount]>0){

      .

      .NSLog(@"First item is: %@",[someArrayobjectAtIndex:0]);

      .

      .}

      .

      這個(gè)例子檢查是否項(xiàng)目數(shù)量超過(guò)零。如果是,則FoundationNSLog函數(shù)記錄第一個(gè)項(xiàng)目的描述,它有一個(gè)索引號(hào),0。

      作為objectAtIndex:的替代方法,你也能使用下標(biāo)的語(yǔ)法來(lái)查詢(xún)數(shù)組,這種方法就像標(biāo)準(zhǔn)的C數(shù)組。之前的例子也能改寫(xiě)如下:

      .if([someArraycount]>0){

      .

      .NSLog(@"First item is: %@",someArray[0]);

      .

      .}

      .

      Sorting Array Objects

      數(shù)組對(duì)象排序

      NSArray類(lèi)提供了各種各樣的方法來(lái)排序它集合的對(duì)象。因?yàn)镹SArray是不可變的,所有的方法都返回一個(gè)新的包含排序的數(shù)組。

      舉個(gè)例子,你能通過(guò)調(diào)用compare:來(lái)為字符串?dāng)?shù)組進(jìn)行排序。

      .NSArray*unsortedStrings= @[@"gammaString",@"alphaString",@"betaString"];

      .

      .NSArray*sortedStrings=

      .

      .[unsortedStringssortedArrayUsingSelector:@selector(compare:)];

      .

      Mutability

      可變的

      盡管NSArray類(lèi)自身是不可變的,但它能包含可變對(duì)象。舉個(gè)例子,如果你添加一個(gè)可變字符串?dāng)?shù)組到不可變數(shù)組,如下所示:

      .NSMutableString*mutableString=[NSMutableStringstringWithString:@"Hello"];

      .

      .NSArray*immutableArray= @[mutableString];

      .

      沒(méi)有什么能阻止你改變字符串。

      .if([immutableArraycount]>0){

      .

      .idstring=immutableArray[0];

      .

      .if([stringisKindOfClass:[NSMutableStringclass]]){

      .

      .[stringappendString:@" World!"];

      .

      .}

      .

      .}

      .

      如果你想在初始化創(chuàng)建后,從數(shù)組中移除對(duì)象,需要使用NSMutableArray,它增加了各種方法來(lái)添加、移除、或者替換一個(gè)或多個(gè)對(duì)象。

      .NSMutableArray*mutableArray=[NSMutableArrayarray];

      .

      .[mutableArrayaddObject:@"gamma"];

      .

      .[mutableArrayaddObject:@"alpha"];

      .

      .[mutableArrayaddObject:@"beta"];

      .

      .

      .

      .[mutableArrayreplaceObjectAtIndex:0withObject:@"epsilon"];

      .

      這個(gè)例子創(chuàng)建了一個(gè)由對(duì)象@"epsilon",@"alpha", 和@"beta"組成的數(shù)組。

      也可以給可變數(shù)組排序,而不需要?jiǎng)?chuàng)建第二個(gè)數(shù)組。

      .[mutableArraysortUsingSelector:@selector(caseInsensitiveCompare:)];

      .

      在這種情況下,包含的項(xiàng)目按照升序、不分大小寫(xiě)排序,@"alpha",@"beta", 和@"epsilon"。

      Sets

      集合

      一個(gè)集合(NSSet)對(duì)象與數(shù)組類(lèi)似,但它保持無(wú)序狀態(tài)且每組的對(duì)象必須不同。

      因?yàn)榧蠜](méi)有排序,所以當(dāng)它進(jìn)行成員調(diào)試時(shí),能提供比數(shù)組更快的性能。

      因?yàn)榛綨SSet類(lèi)不可變,它的內(nèi)容必須是在創(chuàng)建的時(shí)候指定,使用分配并初始化方法或類(lèi)工廠方法都可以。

      .NSSet*simpleSet=

      .

      .[NSSetsetWithObjects:@"Hello, World!", @42,aValue,anObject,nil];

      .

      和NSArray一樣,initWithObjects: 和setWithObjects方法都以結(jié)尾,參數(shù)數(shù)量可變。NSSet的可變子類(lèi)名為NSMutableSet。

      集合只存儲(chǔ)特定的對(duì)象一次,即使你多次嘗試也是如此。

      .NSNumber*number= @42;

      .

      .NSSet*numberSet=

      .

      .[NSSetsetWithObjects:number,number,number,number,nil];

      .

      .// numberSet only contains one object

      .

      Dictionaries

      字典

      不同于簡(jiǎn)單的排序或不排序?qū)ο蟮募希值?(NSDictionary) 通過(guò)給定的鍵來(lái)存儲(chǔ)有關(guān)聯(lián)的對(duì)象,鍵可以被用作檢索。

      最好是使用字符串對(duì)象作為字典的鍵。

      雖然你能用其他對(duì)象作為鍵,但是要為字典記住每一個(gè)鍵且必須支持NSCopying。但是,如果你想使用鍵-值編碼,你必須為字典對(duì)象使用字符串鍵(要學(xué)習(xí)更多,詳見(jiàn)Key-Value Coding Programming Guide))。

      Creating Dictionaries

      創(chuàng)建字典

      你能使用分配初始化以及類(lèi)工廠方法來(lái)常見(jiàn)字典,如下所示:

      .NSDictionary*dictionary=[NSDictionarydictionaryWithObjectsAndKeys:

      .

      .someObject,@"anObject",

      .

      .@"Hello, World!",@"helloString",

      .

      .                      @42,@"magicNumber",

      .

      .someValue,@"aValue",

      .

      .nil];

      .

      作為dictionaryWithObjectsAndKeys: 和initWithObjectsAndKeys:方法,每個(gè)對(duì)象在它的鍵之前被指明,并且對(duì)象和鍵的列表最后要以nil結(jié)尾。

      Objective-C提供了一個(gè)簡(jiǎn)單語(yǔ)法來(lái)創(chuàng)建字典。

      .NSDictionary*dictionary= @{

      .

      .@"anObject":someObject,

      .

      .@"helloString":@"Hello, World!",

      .

      .@"magicNumber": @42,

      .

      .@"aValue":someValue

      .

      .};

      .

      作為字典字面量,鍵在對(duì)象之前被指定,并且列表結(jié)尾沒(méi)有nil。

      Querying Dictionaries

      查詢(xún)字典

      在你創(chuàng)建字典之后,你能要求他找到給定鍵的所存儲(chǔ)的對(duì)象。

      .NSNumber*storedNumber=[dictionaryobjectForKey:@"magicNumber"];

      .

      如果對(duì)象沒(méi)有找到,objectForKey方法返回nil。

      .這兒也可以使用下標(biāo)法來(lái)代替objectForKey:

      .NSNumber*storedNumber=dictionary[@"magicNumber"];

      .

      Mutability

      可變

      如果你想從創(chuàng)建好的字典中添加或者移除對(duì)象,需要使用NSMutableDictionary子類(lèi)。

      .[dictionarysetObject:@"another string"forKey:@"secondString"];

      .

      .[dictionaryremoveObjectForKey:@"anObject"];

      .

      Represent nil with NSNull

      用NSNull表示nil

      不可能添加nil到集合類(lèi),因?yàn)閚il在Objective-C中意思是“沒(méi)有對(duì)象。”如果你想在集合中表示“沒(méi)有對(duì)象”,要使用NSNull類(lèi)。

      .NSArray*array= @[@"string", @42,[NSNullnull]];

      .

      對(duì)于NSNull,null方法總是返回相同的實(shí)例。有這種行為的類(lèi)被稱(chēng)為單例類(lèi)(singleton classes)。你能檢查數(shù)組中的對(duì)象是否等于共享的NSNull實(shí)例,如下所示:

      .for(idobjectinarray){

      .

      .if(object==[NSNullnull]){

      .

      .NSLog(@"Found a null object");

      .

      .}

      .

      .}

      .

      盡管Foundation框架包含比這里描述的更多的功能,你也不是必須要了解每一個(gè)細(xì)節(jié)。如果你想要學(xué)習(xí)更多的關(guān)于Foundation的內(nèi)容,參看Foundation Framework Reference。現(xiàn)在,你已經(jīng)有足夠的信息來(lái)繼續(xù)實(shí)現(xiàn)ToDoList app,你將會(huì)同伙編寫(xiě)自定義數(shù)據(jù)類(lèi)來(lái)做到這一點(diǎn)。

      Using Design Patterns

      Writing a Custom Class

      Copyright 2014 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2013-10-22



      網(wǎng)頁(yè)題目:YourfirstiOSapp(9)——WorkingwithFoundation
      當(dāng)前地址:http://www.ef60e0e.cn/article/pgpggd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
        1. <ul id="0c1fb"></ul>

          <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
          <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

          饶阳县| 保亭| 漯河市| 炉霍县| 安仁县| 佛学| 沂南县| 江川县| 确山县| 芦溪县| 苍南县| 克什克腾旗| 宁陕县| 梅河口市| 日照市| 淮滨县| 通江县| 庆安县| 西藏| 嘉善县| 平舆县| 根河市| 汤原县| 佛冈县| 湘潭县| 广饶县| 深水埗区| 溆浦县| 清丰县| 洛浦县| 吉林省| 陆川县| 张家川| 阳春市| 绥化市| 冕宁县| 建始县| 溆浦县| 临城县| 鹰潭市| 班戈县|