我显示一个十进制的距离,我想删除这个小数,如果它等于0(例如:1200.0Km),我怎么能在swift中做到这一点?我正在显示这样的数字:
let distanceFloat: Float = (currentUser.distance! as NSString).floatValue
distanceLabel.text = String(format: "%.1f", distanceFloat) + "Km"
Run Code Online (Sandbox Code Playgroud) 我正在尝试访问存储在数组中的对象的url,但是我遇到了错误,无论我使用什么方法.
let userPhotos = currentUser?.photos
for var i = 0; i < userPhotos!.count ; ++i {
let url = userPhotos[i].url
}
Run Code Online (Sandbox Code Playgroud)
我来了
找不到会员'url'
并与foreach:
for photo in userPhotos {
Utils.getImageAsync(photo.url , completion: { (img: UIImage?) -> () in
})
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
'[ModelAttachment]?没有名为'Generator'的成员
我的数组是var photos: Array<ModelAttachment>?,我的ModelAttachment看起来像这样:
class ModelAttachment :Model {
var id: String?
var url: String?
var thumb: String?
}
Run Code Online (Sandbox Code Playgroud)
任何指向我做错的指针都会很棒:)
我正在尝试通过facebook sdk获取信息,但到目前为止我只获得用户的ID和名称,虽然我确定有可用的电子邮件,因为这是我的帐户.我一直在寻找几个答案,但到目前为止他们都没有解决我的问题.我做错了什么,为什么在我请求多个权限时它没有返回更多数据?
这是我的代码:
fbLoginManager.logInWithReadPermissions(["public_profile", "email", "user_friends", "user_about_me", "user_birthday"], handler: { (result, error) -> Void in
if ((error) != nil)
{
// Process error
println("There were an error: \(error)")
}
else if result.isCancelled {
// Handle cancellations
fbLoginManager.logOut()
}
else {
var fbloginresult : FBSDKLoginManagerLoginResult = result
if(fbloginresult.grantedPermissions.contains("email"))
{
println(fbloginresult)
self.returnUserData()
}
}
})
Run Code Online (Sandbox Code Playgroud)
以及获取用户数据的功能:
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process …Run Code Online (Sandbox Code Playgroud) 我正在尝试为iOs8找到displaySearchBarInNavigationBar的替代品,有什么我可以使用的(在swift中)?
我试过self.navigationItem.titleView = resultSearchController.searchBar但它没有做任何事情.
我不明白如何找到已弃用的函数的替代品,在苹果文档中它只是说弃用了,没有其他选择,如果你有任何提示,我将不胜感激.
我在我的iOS应用上使用Google登录.直到最近我注意到应用程序不再获取用户名,一切都运行良好,只返回电子邮件地址.
我通过我发送到我的服务器的应用程序获取令牌,该应用程序通过向此端点发送请求来获取完整信息:
https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=MYTOKEN
Run Code Online (Sandbox Code Playgroud)
我现在得到这样的答案:
{
"issuer": "https://accounts.google.com",
"issued_to": "o37l8g.apps.googleusercontent.com",
"audience": "o37l8g.apps.googleusercontent.com",
"user_id": "113504",
"expires_in": ?814,
"issued_at": ?1452991611,
"email": "myemail@gmail.com",
"email_verified": true
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用其他端点,例如https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=和https://www.googleapis.com/oauth2/v1/userinfo?access_token=,但它们都没有用.
我也尝试过操场,但找不到使用哪个端点,我的范围定义明确,我在iOS应用程序中看到所有权限都被请求,但不知怎的,它仍然没有返回用户的名字......有什么想法吗?
我在使用 FragmentStatePagerAdapter 正确显示片段内的片段时遇到了问题。第一次一切正常加载,但下次视图是空白的。我试过这个和这个答案,但它没有解决问题。
所以基本上我有一个 FriendActivityFragment 加载在 MainActivity 中:
public class FriendActivityFragment extends Fragment {
private FriendsTabsPagerAdapter mAdapter;
private ViewPager mPager;
private SlidingTabLayout mTabs;
public FriendActivityFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mAdapter == null) {
//mAdapter = new FriendsTabsPagerAdapter(getActivity().getSupportFragmentManager());
mAdapter = new FriendsTabsPagerAdapter(getChildFragmentManager());
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_friend, container, false);
super.onCreate(savedInstanceState);
mPager = (ViewPager) view.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mTabs = (SlidingTabLayout) view.findViewById(R.id.tabs);
mTabs.setDistributeEvenly(true); …Run Code Online (Sandbox Code Playgroud) 我正在尝试动态加载用户头像作为自定义标记.我的代码基于谷歌地图utils演示,但不知何故它不起作用,它只加载一个图像,所有其他图像为空:
这是我的代码:
public class MapsActivity extends FragmentActivity implements ClusterManager.OnClusterItemClickListener<ModelUser>, ClusterManager.OnClusterItemInfoWindowClickListener<ModelUser> {
private ClusterManager<ModelUser> mClusterManager;
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
private QueryAPI query = new QueryAPI();
private List<ModelUser> users = new ArrayList<ModelUser>();
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
//UI
NetworkImageView avatarImageView;
TextView name;
TextView infos;
TextView distance;
RelativeLayout detailView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
detailView = (RelativeLayout) findViewById(R.id.detailView);
avatarImageView = (NetworkImageView) findViewById(R.id.imageView);
name = (TextView) findViewById(R.id.name);
infos = (TextView) …Run Code Online (Sandbox Code Playgroud) 我从通过 google 登录 android 收到的令牌中收到错误消息:
{“错误”:“invalid_token”,“error_description”:“无效值”}
我还注意到,与我在 iOS 中获得的令牌相比,我的令牌看起来有点短:
ya29.4AFYx2XNZ1sdfdzhWo-of-fSpsDPjgmATx-J82mCjqZJXglwj8VOvedpY_YXJgEVIWe
Run Code Online (Sandbox Code Playgroud)
我得到这样的令牌:
private class RetrieveTokenTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String accountName = params[0];
String scopes = "oauth2:profile email";
String token = null;
try {
token = GoogleAuthUtil.getToken(getActivity().getApplicationContext(), accountName, scopes);
} catch (IOException e) {
Log.e(TAG, e.getMessage());
} catch (UserRecoverableAuthException e) {
//startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED);
} catch (GoogleAuthException e) {
Log.e(TAG, e.getMessage());
}
return token;
}
@Override
protected void onPostExecute(String token) {
super.onPostExecute(token);
Log.i("Token Value: ", …Run Code Online (Sandbox Code Playgroud) 我不能再运行我的应用了,我有错误:
失败[INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
我在这里读了很多关于它的其他问题,但到目前为止我找不到解决方案,有人可以查看我的清单并告诉我我做错了什么吗?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kalianey.com.bonnieandclit" >
<application
android:name="Utils.KYController"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Register"
android:label="@string/title_activity_register" >
</activity>
<activity
android:name=".People"
android:label="@string/title_activity_people" >
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
编辑:错误日志
Installing kalianey.com.bonnieandclit
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/kalianey.com.bonnieandclit"
pkg: /data/local/tmp/kalianey.com.bonnieandclit
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
Run Code Online (Sandbox Code Playgroud)
编辑2:文件结构的屏幕截图
我一直在阅读stackoverflow和这篇博客文章中的不同答案,并试图实现他们的解决方案,但我仍然得到错误:
RecyclerView:没有连接适配器; 跳过布局
所以我onCreateView在我的片段中初始化我的回收器视图,如下所示:
public class ProfileFragment extends Fragment {
private ModelUser user;
private View view;
private RecyclerView gridView;
private ProfilePhotoRecyclerViewAdapter adapter;
private List<ModelAttachment> photoList = new ArrayList<ModelAttachment>();
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_profile, container, false);
initializeRecyclerView();
//Get extra info for user
QueryAPI query = new QueryAPI();
query.userExtra(user, new QueryAPI.ApiResponse<ModelUser>() {
@Override
public void onCompletion(ModelUser result) {
user = result;
photoList.clear();
photoList.addAll(0,user.getPhotos());
adapter.notifyDataSetChanged();
}
});
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
功能 …
我已经集成了FBAnnotationClustering,mkmapview它完美地工作,但是当在完全相同的位置有多个注释时,我无法使用正确的信息显示annotationView.我正在尝试循环注释并在同一视图中显示它们(每个都带有一个标注按钮以显示更多信息).
到目前为止,我设法让一个标注工作在底部显示细节,但在annotationView中它显示没有正确的标题,并且只有一个因此它不是很有用.所以我想知道,是否可以在同一视图上显示多个注释?知道我怎么能做到这一点?

这是我的集群类:
class FBAnnotationCluster : NSObject {
var coordinate = CLLocationCoordinate2D(latitude: 39.208407, longitude: -76.799555)
var title:String = "cluster"
var subtitle:String? = nil
var annotations:[FBAnnotation] = []
}
Run Code Online (Sandbox Code Playgroud)
我的单注释类:
class FBAnnotation : NSObject {
var coordinate: CLLocationCoordinate2D
var id: Int
var title: String
var subtitle: String
var distance: String
init(id: Int, title: String, subtitle: String, distance: String, coordinate: CLLocationCoordinate2D){
self.id = id
self.title = title
self.subtitle = subtitle
self.distance = distance
self.coordinate = coordinate
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序在Facebook登录,这很好,但每次我重新打开它我必须再次连接到Facebook进行登录.我也在使用谷歌登录sdk我可以调用该功能gSignIn.signInSilently(),是否有类似于Facebook的东西?我为javascript sdk 找到了这个,但我不知道ios SDK是否可能以及如何在swift中使用它...
是否有可能事先检查json的类型?我是somteimes得到一个数组,有时一个对象,我不知道如何处理这2个案例,而不做2个不同的功能...
public void RequestApi( String url, final ApiResponse<ApiResult> completion )
{
Log.v("Performing request: ", url);
JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, hostname+url, (JSONObject) null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response)
{
Log.v("RequestApi Response", response.toString());
//Log.v("Data: ", response.toString());
try {
ApiResult res = new ApiResult();
Boolean success = response.getBoolean("success");
//here need to check type, sometimes array, sometimes object
JSONArray data = response.getJSONArray("data");
res.success = success;
res.data = data;
completion.onCompletion(res);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() …Run Code Online (Sandbox Code Playgroud)