2012-04-14 42 views
0

我建立後端和前端代碼爲我的iPhone應用程序。前端代碼將在iPhone上構建,然後在iPad上構建。但後端代碼將是相同的。我的少數開發人員正在研究後端和一些前端。後端,應用程序使用CoreData。我正在考慮將後端代碼創建爲靜態庫,並將其鏈接到前端代碼中。但是這似乎太複雜了。有沒有其他的機制,例如,後端項目說,P1構建爲空應用程序和前端構建爲P2。並且確保P1不能使用P2中的任何類/文件/代碼(意味着P1不依賴於P2),但P2可以使用P1中的類/ API等。我想強制執行P1不會(無意中)使用任何P2代碼來清除依賴關係分離。 有什麼建議嗎?的XCode的代碼分離

回答

2

我認爲一個靜態庫是一個很好的解決方案。就像你可以創建一個輔助類來從核心數據庫中獲取數據一樣。例如:

+ (NSArray *)fetchAllUsers; 
+ (User *)fetchUserByName:(NSString *)name; 

前端開發人員只知道你可以調用這些方法。後端開發人員負責該方法的工作。

如果你需要一個實例,考慮singelton類。

編輯:(實施例靜態核心數據類)

+ (void)insertNewUserWithName:(NSString *)name 
{ 
    NSManagedObjectContext *context = [self managedObjectContext]; 

    User *user = [NSEntityDescription insertNewObjectForEntityForName:@"Users" 
               inManagedObjectContext:context]; 

    [user setName:name]; 

    NSError *error; 
    if (![context save:&error]) 
    { 
     NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
    } 
} 
+0

由於Juzzz。你有什麼方便的機制來創建靜態庫,如下所示:a)創建靜態lib myLib.a,其中包含CoreData的東西,並公開一些API供其他人使用。 b)創建沒有CoreData的iPhone應用程序MyApp項目,它只是調用一個使用myLib.a暴露的API,比如說createUser,deleteUser等。換句話說,MyApp甚至不知道myLib.a使用CoreData來實現這個createUser API。有什麼想法嗎? – theiOSguy 2012-04-14 20:01:59

+0

您的概念的問題在於,iOS應用程序必須使用SQLite等數據庫啓用核心數據。當您的數據庫與您製作的其他應用程序相同時,您可以創建一個靜態庫來對數據執行讀取/編輯等。但是,當創建靜態庫時,使用非常動態的可重用方法很容易改變。我會在我的帖子中爲你創建一個簡單的例子。 – Justin 2012-04-14 20:16:21